【Spring 使用】依赖注入 – 基于 setter 方法的注入
一、基于 setter 方法的注入
基于 setter 方法注入的方式和普通 Bean 进行值的注入相似,都是使用 property
进行注入,只不过不是使用 value
进行值注入,而是使用 ref
进行对象的引用。
1. 使用例子
- 目录结构:
|-- src.main
|-- java.com.test
|-- Main.java
|-- TestDIClass.java
|-- SubTestDIClass.java
|-- resources
|-- MyBean.xml
- TestDIClass.java:
public class TestDIClass {
private SubTestDIClass subTestDIClass;
public void setSubTestDIClass(SubTestDIClass subTestDIClass) {
System.out.println("TestDIClass 构造");
this.subTestDIClass = subTestDIClass;
}
public void test() {
subTestDIClass.test();
}
}
- SubTestDIClass.java:
public class SubTestDIClass {
public SubTestDIClass() {
System.out.println("SubTestDIClass 构造");
}
public void test() {
System.out.println("SubTestDIClass 的测试方法");
}
}
- MyBean.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="testDIClass" class="com.test.TestDIClass">
<property name="subTestDIClass" ref="subTestDIClass" />
</bean>
<bean id="subTestDIClass" class="com.test.SubTestDIClass" />
</beans>
- Main.java:
public class Main {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("MyBean.xml");
TestDIClass myBean = (TestDIClass) context.getBean("testDIClass");
myBean.test();
}
}
- 结果:
SubTestDIClass 构造
TestDIClass 构造
SubTestDIClass 的测试方法