xml进行注入
在Spring IoC 容器中基于xml完成对Bean的装配,创建测试类,获取ProductController的实例,调用其save()方法,在控制台上打印Product的信息
spring-config.xml
<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.xsdhttp://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
@Testpublic 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
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
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;}@Overridepublic String toString() {return "Product{" +"id=" + id +", name='" + name + '\'' +", subTitle='" + subTitle + '\'' +", price=" + price +'}';}}
Controller
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**/@Controllerpublic class ProductController {private ProductService productService;public void save(Product product){System.out.println("hello");// productService.save(product);// 调用业务层接口的保存方法}}
Service
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**/@Servicepublic class ProductServiceImpl implements ProductService {@Overridepublic void save(Product product) {System.out.println(product); // 实现接口中定义的方法}}
ProductTest
public class ProductTest {@Testpublic 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);}}