zoukankan      html  css  js  c++  java
  • Spring框架中<constructor-arg>与<property>理解

    配置文件的根元素是beans,每个组件使用bean元素来定义,bean元素可以有许多属性,其中有两个是必须的:id和class。id表示组件的默认名称,class表示组件的类型。

    1. 依赖注入的方式:  constructor-arg:通过构造函数注入。   property:通过setxx方法注入。
    2.  设值注入,使用property子标签:

      <bean id="renderer" class="com.apress.prospring.ch2.StandardOutMessageRenderer">                       <property name="messageProvider">           

      <ref local="provider"/>       

      </property>   

      </bean>   

    3.  构造子注入,使用constructor-arg子标签:

      <bean id="provider"class="com.apress.prospring.ch4.ConfigurableMessageProvider">       <constructor-arg>           

      <value>This is a configurable message</value>       

      </constructor-arg>   

      </bean>   

    4.  使用constructor-arg标签的index属性,对应于构造函数的多个参数,index属性的值从0开始。   

      <bean id="provider" lass="com.apress.prospring.ch4.ConfigurableMessageProvider">       <constructor-arg index="0">           

      <value>first parameter</value>       

      </constructor-arg>       

      <constructor-arg index="1">           

      <value>second parameter</value>       

      </constructor-arg>     

      </bean>   

    5. 使用constructor-arg的type属性,避免构造子冲突:

      <bean id="constructorConfusion" class="com.apress.prospring.ch4.ConstructorConfusion">       

      <constructor-arg type="int">           

      <value>90</value>       

      </constructor-arg>   

      </bean>   

      public class ConstructorConfusion {

            public ConstructorConfusion(String someValue) {

                 System.out.println("ConstructorConfusion(String) called");

             }

             public ConstructorConfusion(int someValue) {

                 System.out.println("ConstructorConfusion(int) called");

             }

      }

    6.  

      注入集合属性,使用list,map,set和props标签,分别对应List,Map,Set和Properties:

      <bean id="injectCollection" class="com.apress.prospring.ch4.CollectionInjection">

             <property name="map">

                 <map>

                     <entry key="someValue">

                         <value>Hello World!</value>

                     </entry>

                     <entry key="someBean">

                         <ref local="oracle"/>

                      </entry>

                 </map>

             </property>

             <property name="props">

                 <props>

                     <prop key="firstName">

                         Rob

                     </prop>

                     <prop key="secondName">

                         Harrop

                     </prop>

                 </props>

             </property>

             <property name="set">

                 <set>

                     <value>Hello World!</value>

                     <ref local="oracle"/>

                 </set>

             </property>

             <property name="list">

                 <list>

                     <value>Hello World!</value>

                     <ref local="oracle"/>

                  </list>

             </property>

         </bean>  

  • 相关阅读:
    整套的操作体系:三点看股法
    [Garmin]安卓版本2.35完美安装程序+地图+JVC+电子眼
    [Garmin]安卓版本2.35完美安装程序+地图+JVC+电子眼
    [凯立德]2015春季版C2739-M7L83-3521JON,已O+带3D+带路况
    [凯立德]2015春季版C2739-M7L83-3521JON,已O+带3D+带路况
    DirectX9:总结篇 异常错误检测
    Linux开发:论ffmpeg的使用
    VS的bug集锦
    牛客:脑筋急转弯的选择题
    剑指Offer:栈的压入/弹出序列
  • 原文地址:https://www.cnblogs.com/-strong/p/7651912.html
Copyright © 2011-2022 走看看