Spring依赖注入

 先就IOC和DI谈一点我的看法。

IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述的那样晦涩。java程序员都知道:java程序中的每个业务逻辑至少需要两个或以上的对象来协作完成,通常,每个对象在使用他的合作对象时,自己均要使用像new object() 这样的语法来完成合作对象的申请工作。你会发现:对象间的耦合度高了。而IOC的思想是:Spring容器来实现这些相互依赖对象的创建、协调工作。对象只需要关系业务逻辑本身就可以了。从这方面来说,对象如何得到他的协作对象的责任被反转了(IOC、DI)。

依赖注入(Dependnecy Injection):

在正常情况下,一个类要跟另一个类建立联系,可能会使用如下的模式:

class A{...}

class B{

private A a;

      }

如果是这样处理,那么每次实例化一个B的对象,如b1,一定会实例化一个A的对象,比如a1,并且b1和a1是紧耦合的,b1牢牢地和a1绑定在一起了。他们之间的关系不能变了。如果有一个a2要与b1建立联系是不可能的。只能再实例化一个b2对象。这样很难进行测试而且程序的灵活性很差。

Spring框架的做法是:

先定义一个接口X,让A实现这个接口X,再定义B,在B中调用接口X,如:

interface X{

method1(){}

}

class A implements X{

method1(){}

}

class B{

X x;

}

xml中对A,B进行配置:


<bean id="A" class=".....">

<property name="msg">

<value>A</value>

</property>

</bean>

<bean id="B" class=".....">

<constructor-arg ref="A"/>

<property name="msg">

<value>B</value>

</property>

</bean>

Spring是通过注入的方式将类A注入到了类B,而且我们可以通过xml将任何实现了X接口的类与类B产生关联。这就是Spring的依赖注入的思想。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭