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>  

  • 相关阅读:
    用批处理来启动/停止SQL SERVER 2005的服务 【转载】
    c#命名法 【转】
    oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常【转载】
    fetch bulk collect into 批量效率的读取游标数据 【转载】
    Oracle 外连接和 (+)号的用法 【转载】
    如何在Oracle中复制表结构和表数据 【转载】
    Oracle 小知识点
    VSS 2005 配置(含录像) 【转载】
    json 详解 【转】
    .NET 2.0 使用最新版的JSON.net 进行反序列化 【转载】
  • 原文地址:https://www.cnblogs.com/-strong/p/7651912.html
Copyright © 2011-2022 走看看