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

    }

}
相关推荐
不吃香菜学java4 小时前
Redis的java客户端
java·开发语言·spring boot·redis·缓存
橙露6 小时前
SpringBoot 整合 MinIO:分布式文件存储上传下载
spring boot·分布式·后端
小眼哥6 小时前
SpringBoot整合Vue代码生成exe运行程序以及windows安装包
vue.js·windows·spring boot
shark22222229 小时前
能懂!基于Springboot的用户增删查改(三层设计模式)
spring boot·后端·设计模式
IGAn CTOU10 小时前
王炸级更新!Spring Boot 3.4 正式发布,新特性真香!
java·spring boot·后端
indexsunny12 小时前
互联网大厂Java面试实战:核心技术与微服务架构在电商场景中的应用
java·spring boot·redis·kafka·maven·spring security·microservices
海兰12 小时前
【第3篇-续】多模型多模态项目实现示例(增加OpenAI通用适配)附源代码
java·人工智能·spring boot·alibaba·spring ai
SarL EMEN13 小时前
海康威视摄像头ISUP(原EHOME协议) 摄像头实时预览springboot 版本java实现,并可以在浏览器vue前端播放(附带源码)
java·前端·spring boot
ccice0113 小时前
全面掌握Spring Boot + MyBatis + Maven + MySQL:从开发到部署的后端技术详解
spring boot·maven·mybatis
QQ227923910214 小时前
Java springboot基于微信小程序的智慧旅游导游系统景点门票酒店预订(源码+文档+运行视频+讲解视频)
java·spring boot·微信小程序·maven·vuejs