对于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);

    }

}
相关推荐
计算机程序设计小李同学1 天前
基于 Spring Boot + Vue 的龙虾专营店管理系统的设计与实现
java·spring boot·后端·spring·vue
LiZhen7981 天前
SpringBoot 实现动态切换数据源
java·spring boot·mybatis
qq_12498707531 天前
基于Java Web的城市花园小区维修管理系统的设计与实现(源码+论文+部署+安装)
java·开发语言·前端·spring boot·spring·毕业设计·计算机毕业设计
VX:Fegn08951 天前
计算机毕业设计|基于springboot + vue云租车平台系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
Chasmれ1 天前
Spring Boot 1.x(基于Spring 4)中使用Java 8实现Token
java·spring boot·spring
汤姆yu1 天前
2026基于springboot的在线招聘系统
java·spring boot·后端
计算机学姐1 天前
基于SpringBoot的校园社团管理系统
java·vue.js·spring boot·后端·spring·信息可视化·推荐算法
Coder_Boy_1 天前
基于SpringAI的在线考试系统-企业级教育考试系统核心架构(完善版)
开发语言·人工智能·spring boot·python·架构·领域驱动
java1234_小锋1 天前
Java高频面试题:SpringBoot如何自定义Starter?
java·spring boot·面试
indexsunny1 天前
互联网大厂Java面试实战:微服务与Spring生态技术解析
java·spring boot·redis·kafka·mybatis·hibernate·microservices