Spring 依赖注入
Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean之间的依赖关系。
每个Java程序或多或少都有那么几个对象,正因为这些对象的互相配合,才让我们的功能得以实现。相互配合的同时,有需要注意尽量减少类与类之间的耦合性
。
那么就涉及到依赖倒置原则(Dependence Inversion Principle)
:“这个原则是指设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。”
话比较官方,总让人感觉晦涩难懂。不过通过使用Spring的依赖注入就可以体会到什么是依赖倒置原则。依赖注入可以采用两种方式,一是构造注入,二为Setter注入。
构造注入
class Test{
private Test1 test1;
public Test(Test1 test1){this.test1 = test1;}
}
public class TestMain {
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("SpringBean.xml");
Test t = (Test)app.getBean("test");
}
}
xml配置如下:
<bean id="test" class="com.java.main.test.Test">
<!--构造注入Test1-->
<constructor-arg ref="test1"/>
</bean>
<bean id="test1" class="com.java.main.test.Test1">
</bean>
Setter注入
class Test{
private Test1 test1;
public setTest1(Test1 test1){this.test1 = test1;}
public getTest1(){return test1;}
}
public class TestMain {
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("SpringBean.xml");
Test t = (Test)app.getBean("test");
}
}
xml配置如下:
<bean id="test" class="com.java.main.test.Test">
<!--如果你要把一个引用传递给一个对象,那么你需要使用 标签的 ref 属性,而如果你要直接传递一个值,那么你应该使用 value 属性。-->
<property name="test1" ref="test1"/>
</bean>
<bean id="test1" class="com.java.main.test.Test1">
</bean>