==== 注入 ==== 1 什么是注入(Injection) 通过Spring工厂及配置文件,为所创建对象的属性即成员变量赋值。 2 为什么需要注入 /src/main/java/cn/tedu/injection/Employee.java: public class Employee { private Integer id; private String name; 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; } @Override public String toString() { return "Employee{" + "id=" + id + ", name='" + name + '\'' + '}'; } } /src/test/java/cn/tedu/injection/EmployeeTest.java: class EmployeeTest { private Logger logger = Logger.getLogger(EmployeeTest.class); @org.junit.jupiter.api.Test void test() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/applicationContext.xml"); Employee employee = applicationContext.getBean("employee", Employee.class); employee.setId(139); \ 通过set方法手 employee.setName("关羽"); / 动为属性赋值 logger.debug(employee); } } Employee{id=139, name='关羽'} 例程:Injection 如果Employee类的属性需要改变,则必须修改Java文件——耦合。 3 通过配置文件实现注入 /src/main/resources/applicationContext.xml: ... \_ 139 \ 与属性名 _/ 严格一直 / 关羽 ... /src/test/java/cn/tedu/injection/EmployeeTest.java: class EmployeeTest { private Logger logger = Logger.getLogger(EmployeeTest.class); @org.junit.jupiter.api.Test void test() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/applicationContext.xml"); Employee employee = applicationContext.getBean("employee", Employee.class); /* employee.setId(139); \ 无需手 employee.setName("关羽"); / 动赋值 */ logger.debug(employee); } } Employee{id=139, name='关羽'} 例程:Injection 如果Employee类的属性需要改变,只需修改配置文件,Java代码不受影响——解耦。