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、 在使用構造子注入時,需要注意的問題是要避免構造子沖突的情況發生。考慮下面的情況:   

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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