`
付绍高
  • 浏览: 35789 次
  • 性别: Icon_minigender_1
  • 来自: 江西临川
社区版块
存档分类
最新评论

spring的Ioc详解

阅读更多

IOC)应用本身不负责依赖对象的创建和维护,而是由外部容器来负责。这样控制权就由应用转移到外部容器,控制权的转移就是所谓的反转(也称依赖注入)

 

1:设值注入

当某个 Java 实例(调用者)需要另一个Java 实例(被调用者)时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。而在依赖注入的模式下,创建被调用者的工作不再由调用者来完成,通常由 Spring 容器来完成,然后注入调用者,因此称为控制反转,也称为依赖注入。

Private Dao dao

/*定义需要被使用的接口,具体使用什么实现类这里不管*/

public void set Dao (Dao dao){

  this. dao = dao;

 }

/*定义被注入接口的set方法,该方法一定要符合JAVABEAN的标准。在运行时候,

  *Sping就会根据配置的<ref local=""/>,找到需要注入的实现类*/

/*这个时候使用的dao,就不再是接口Dao本身,而是被注入的子类实例,所以这里的function()动作就是具体子类的function动作*/

<beans>

<bean id="调用者名字" class="调用者">

 <!-- 声明调用者实现类中的属性 -->

 <property name="属性名">

  <ref local="被调用者名字"/>

   <!-- 指定其中声明的属性,需要用本地的那个id对应的class

    这里local的值为"被调用者名字",表示shux的属性值在注入的时候,

    将会用被调用者名字对应的实例注入

   -->

 </property>

</bean>

<bean id="被调用者名字" class="被调用者/>

</beans>

 

2:构造注入:

 

构造注入即是通过构造函数进行注入,到目前为止,SPRINT支持设值注入与构造注入两种方式,它们可以同时存在。

 

Private Dao dao;

 public调用者类(Dao dao){

  this. dao = dao;

 }

 <bean id="调用者名字" class="调用者">

 <!-- 定义需要被构造注入的实现类,同设值注入的结果一样,都是注入接口的实现类 -->

 <constructor-arg><ref bean="被调用者名字"/></constructor-arg></bean>

<bean id="被调用者名字" class="被调用者"/>

</beans>

 

设值注入与传统JAVABEAN的写法一样,比较容易接受;而构造注入在应用程序加载的时候就已经完成了注入,可以控制加载顺序。各有优缺点,根据不同的情况选用了

分享到:
评论
1 楼 付绍高 2011-08-18  
自己坐沙发

相关推荐

Global site tag (gtag.js) - Google Analytics