spring - constructor-arg的常规用法


 1、使用构造子注入时,则使用constructor-arg子标签,来指定构造函数的参数。   

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

    <constructor-arg>   

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

    </constructor-arg>   

</bean>   

 

2、当构造函数有多个参数时,可以使用constructor-arg标签的index属性,index属性的值从0开始。   

<bean id="provider" class="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>   

 

3、 在使用构造子注入时,需要注意的问题是要避免构造子冲突的情况发生。考虑下面的情况:   

public class ConstructorConfusion {   

public ConstructorConfusion(String someValue) {   

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

    }   

public ConstructorConfusion(int someValue) {   

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

    }   

}   

 使用如下配置文件   

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

    <constructor-arg>   

        <value>90</value>   

    </constructor-arg>   

</bean>   

  那 么,当实例化组件constructorConfusion时,将输出ConstructorConfusion(String) called,也就是 说参数类型为String的构造函数被调用了,这显然不符合我们的要求。为了让Spring调用参数为int的构造函数来实例化组件 constructorConfusion,我们需要在配置文件中明确的告诉Spring,需要使用哪个构造函数,这需要使用constructor- arg的type属性。   

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

    <constructor-arg type="int">   

        <value>90</value>   

    </constructor-arg>   

</bean>  

 

 

注:我深知知识就是熟练与记忆的过程,愿与你们一同分享。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM