对于IOC的注入两种方式(注解和XML)

xml进行注入

在Spring IoC 容器中基于xml完成对Bean的装配,创建测试类,获取ProductController的实例,调用其save()方法,在控制台上打印Product的信息

spring-config.xml
java 复制代码
<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:aop="http://www.springframework.org/schema/aop"

       xsi:schemaLocation="

       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    
        <bean id="productController" class="com.yt.Controller.ProductController">



        </bean>


    </beans>
ProductTest
java 复制代码
@Test

public void test2(){


    Product product = new Product(12, "111", "111", 123);
//这里是要根据target的相对路径来获取的相应的xml文件的的位置的

    ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("spring-config.xml");

    ProductController productController = (ProductController) classPathXmlApplicationContext.getBean("productController");

    productController.save(product);

}

注解注入

在Spring IoC 容器中基于注解(@Autowired)完成对Bean的装配,创建测试类,获取ProductController的实例,调用其save()方法,在控制台上打印Product的信息

AppConfig
java 复制代码
package com.yt.config;



import org.springframework.context.annotation.ComponentScan;



/**

 * @program: mybatis-operate

 * @description

 * @author: YangTao

 * @create: 2024-04-22 08:43

 **/

@ComponentScan("com.yt")

public class AppConfig {

}
Product
java 复制代码
package com.yt;



/**

 * @program: mybatis-operate

 * @description

 * @author: YangTao

 * @create: 2024-04-22 08:25

 **/

public class Product {

    private Integer id;

    private String name;

    private String subTitle;

    private float price;



    public Product(Integer id, String name, String subTitle, float price) {

        this.id = id;

        this.name = name;

        this.subTitle = subTitle;

        this.price = price;

    }



    public Integer getId() {

        return id;

    }



    public void setId(Integer id) {

        this.id = id;

    }



    public String getName() {

        return name;

    }



    public void setName(String name) {

        this.name = name;

    }



    public String getSubTitle() {

        return subTitle;

    }



    public void setSubTitle(String subTitle) {

        this.subTitle = subTitle;

    }



    public float getPrice() {

        return price;

    }



    public void setPrice(float price) {

        this.price = price;

    }



    @Override

    public String toString() {

        return "Product{" +

                "id=" + id +

                ", name='" + name + '\'' +

                ", subTitle='" + subTitle + '\'' +

                ", price=" + price +

                '}';

    }

}
Controller
java 复制代码
package com.yt.Controller;



import com.yt.Product;

import com.yt.Service.ProductService;

import org.springframework.stereotype.Controller;



/**

 * @program: mybatis-operate

 * @description

 * @author: YangTao

 * @create: 2024-04-22 08:27

 **/

@Controller

public class ProductController {

        private ProductService productService;



        public void save(Product product){

            System.out.println("hello");

//            productService.save(product);// 调用业务层接口的保存方法

        }

}
Service
java 复制代码
package com.yt.Service;



import com.yt.Product;

import org.springframework.stereotype.Service;



/**

 * @program: mybatis-operate

 * @description

 * @author: YangTao

 * @create: 2024-04-22 08:28

 **/

public interface ProductService {

    public void save(Product product); // 保存商品操作

}









package com.yt.Service.ServiceImpl;



import com.yt.Product;

import com.yt.Service.ProductService;

import org.springframework.stereotype.Service;



/**

 * @program: mybatis-operate

 * @description

 * @author: YangTao

 * @create: 2024-04-22 08:28

 **/

@Service

public class ProductServiceImpl implements ProductService {

    @Override

    public void save(Product product) {

        System.out.println(product); // 实现接口中定义的方法

    }

}
ProductTest
java 复制代码
public class ProductTest {



    @Test

    public void test1(){

        Product product = new Product(12, "111", "111", 123);

        AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(AppConfig.class);

        ProductController productController = (ProductController) annotationConfigApplicationContext.getBean(ProductController.class);

        productController.save(product);





        ProductService productService = (ProductService) annotationConfigApplicationContext.getBean(ProductService.class);

        productService.save(product);

    }

}
相关推荐
vx-程序开发5 小时前
【计算机毕设】51300童装超市管理系统的设计与实现
java·vue.js·spring boot·源码·课程设计·毕设·大作业
ym hyd 1116 小时前
题库建立与考试系统源码 Java+SpringBoot+Vue3 前后分离
java·开发语言·vue.js·spring boot·毕设
萧瑟余晖7 小时前
Spring Boot Starter机制与自定义详解
spring boot
vx-程序开发8 小时前
【计算机毕设】52744基于微信小程序的民宿智能预订系统
java·spring boot·毕业设计·源码·课程设计·毕设·大作业
萧瑟余晖8 小时前
Spring Boot 配置体系详解
spring boot
专业程序开发源9 小时前
springboot古城景区管理系统88564-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
小蒜学长9 小时前
基于微信小程序的遇见咖啡店点餐系统设计与实现(代码+数据库+LW)
java·spring boot·后端·微信小程序·咖啡店点餐系统
小蒜学长9 小时前
基于SSM+VUE的电影售票平台的设计与实现(代码+数据库+LW)
java·vue.js·spring boot·后端·ssm框架·电影售票平台
Q264336502310 小时前
【有源码】基于Spring Boot+Vue的骑行爱好者平台的设计与实现-计算机毕设选题推荐
java·vue.js·spring boot·毕业设计·课程设计·数据可视化·源代码
FYKJ_201010 小时前
SpringSecurity教室智能预约系统73972-计算机课程设计、毕业设计
java·vue.js·spring boot·python·mysql·spring·django