您的位置:首页 > 编程语言 > Java开发

Spring学习笔记(8)——依赖注入

2017-07-15 10:27 190 查看
spring依赖注入
使用构造器注入
使用属性setter方法注入
使用Field注入(用于注解方式)
 
注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果。
 
1.手工装配依赖对象
 
 手工装配依赖对象,在这种方式中又有两种编程方式
  *  在xml配置文件中,通过在bean节点下配置
  *  在java代码中使用@Autowired或@Resource注解方式进行装配
              
 依赖注入--手工装配--XML方式
  通过setter方法注入依赖
  <bean>元素的< property >子元素指明了使用它们的set方法来注入。可以注入任何东西,从基本类型到集合类,甚至是应用系统的bean。
  通过setter方法注入依赖
         *简单bean配置
          配置bean的简单属性,基本数据类型和String。

<bean id="personService" class="com.test.bean.impl.PersonServiceImpl">
<!-- 基本类型,string类型 -->
<property name="age"value="20"></property>
<property name="name" value="张无忌"></property>
</bean>

 

通过setter方法注入依赖
    *引用其它bean

<bean id="person" class="com.test.bean.Person" />
<bean id="personService" class="com.test.bean.impl.PersonServiceImpl">
<!-- 引用类型 -->
<property name="person" ref="person" />
</bean>

 
     *内部bean

<bean id="personService"class="com.test.bean.impl.PersonServiceImpl">
<!-- 内部bean注入 -->
<property name="personClass">
<bean class="com.test.bean.PersonClass" />
</property>
</bean>

 这种方式的缺点是你无法在其它地方重用这个personClass实例,原因是它是专门为personService而用。
 
   *装配集合
 
      若bean的属性是集合类型,按如下处理:
        A、装配List和数组:
          <!-- 装配list -->
          <property name="lists">
               <list>
                   <value>list1</value>
                   <value>list2</value>
                   <ref bean="person"/>
               </list>
          </property>
         <!--装配数组 -->
        <property name="obj">
             <list>
                 <value>obj1</value>
                 <value>obj2</value>
                 <ref bean="person"/>
             </list>
        </property>
 
  B、装配set:
    <!--装配set -->
        <property name="sets">
             <set>
                <value>set1</value>
                <value>set2</value>
                <ref bean="person"/>
             </set>
        </property>
  set使用方法和list一样,不同的是对象被装配到set中,而list是装配到List或数组中装配。
 
  *装配键值对
  C、装配map:
   <!-- 装配map-->
    <propert yname="maps">
         <map>
             <entry key="01">
                  <value>map01</value>
             </entry>
             <entry key="02">
                 <value>map02</value>
             </entry>
        </map>
    </property>
      map中的<entry>的数值和<list>以及<set>的一样,可以使任何有效的属性元素,需要注意的是key值必须是String的。
  D、装配Properties:
  <!--装配Properties  -->
  <property name="props">
   <props>
     <prop key="01">prop1</prop>
     <prop key="02">prop2</prop>
   </props>
  </property>
       E、设置null:
            <!--装配null -->
        <property name="listnull">
              <null/>
        </property>
     
      通过参数的顺序:
            <constructor-arg index="0">
                   <value>张三</value>
            </constructor-arg>
            <constructor-arg index="1">
                   <value>56</value>
            </constructor-arg>
 
      通过构造函数注入依赖
 
          <!--通过参数的类型 -->
          <constructor-arg type="java.lang.Integer">
                   <value>56</value>
          </constructor-arg>
          <constructor-arg type="java.lang.String">
                   <value>张三</value>
          </constructor-arg>
 
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: