spring DI

  DI:依赖注入,是IOC的一种重要实现 。一个对象的创建往往会涉及到其他对象的创建,比如一个对象A的成员变量持有着另一个对象B的引用,这就是依赖,A依赖于B。IOC机制既然负责了对象的创建,那么这个依赖关系也就必须由IOC容器负责起来。负责的方式就是DI——依赖注入,通过将依赖关系写入配置文件,然后在创建有依赖关系的对象时,由IOC容器注入依赖的对象,如在创建A时,检查到有依赖关系,IOC容器就把A依赖的对象B创建后注入到A中(组装,通过反射机制实现),然后把A返回给对象请求者,完成工作。总的来说就是将一个类注入到另一个类之中,所以除了本次列举的配置文件中的注入,自定义类上面使用的@Resource、@Autowired都属于依赖注入

  在spring-base配置文件中除了可以配置bean对象外,还可以对bean对象的属性进行配置:

<bean id="emp" class="cn.lt.spring.vo.Emp">

  <property name="empno" value="7369"/>

</bean>

  这是对于单个类进行的IOC的处理,但是如果A类依赖于B类呢?

A类中:

  private B b ;

  public void setB(B b){

    this.b = b ;

  }

这样spring中的处理是只需要在A类<bean>标签中引入B就可以了:

<bean id="a" class="cn.lt.spring.vo.A">

  <property name="ano" value="7369"/>

  <property name="b" ref="b" />    //对依赖类的注入使用<property>就可以

</bean>

<bean id="b" class="cn.lt.spring.vo.B">

  <property name="bno" value="8899"/>

</bean>

数组注入:使用<array>标签

  <array>

    <ref bean="B">

    <ref bean="C">

  </array>

list集合注入:使用<list>标签,默认使用ArrayList

  <list>

    <ref bean="B">

    <ref bean="C">

  </list>

set集合注入:默认使用LinkedHashSet子类

  <set>

    <ref bean="B">

    <ref bean="C">

  </set>

map集合注入:默认使用LinkedHashMap子类

  <map>

    <entry key="a" bean="B">

    <entry key="b" bean="C">

  </map>

properties集合注入:

  <props>

    <prop key="hello">世界</prop>

    <ref key="world">你好</prop>

  </props>

原文地址:https://www.cnblogs.com/haibinggan-/p/9233452.html