Spring通過構造方法注入的四種方式


通過構造方法注入,就相當於給構造方法的參數傳值

  set注入的缺點是無法清晰表達哪些屬性是必須的,哪些是可選

    的,構造注入的優勢是通過構造強制依賴關系,不可能實例化不

    完全的或無法使用的bean。

MemberBean定義四個變量,

   private String name;

private Double salary;

private Dept dept;

private String sex;

加上構造方法和toString方法:方便測試

Dept:

   private String dname;

private String deptno;

使用set方法注入

第一種方法:根據索引賦值,索引都是以0開頭的:

 <bean           

id="memberBean" class="www.csdn.spring01.constructor.MemberBean">

         <constructor-arg index="0" value="劉曉剛" />

         <constructor-arg index="1" value="3500" />

         <constructor-arg index="2" ref="dept"/>

         <constructor-arg index="3" value="男" />

 第二種方法是根據所屬類型傳值

 這種方法基本上不怎么適用,因為一個類里可以有好幾個相同基本類型的變量,很容易就混淆值傳給哪一個參數了所以做好不要使用這種方法:

         <constructor-arg type="Java.lang.String" value="劉曉剛" 

         <constructor-arg type="java.lang.Double" value="3500" />

         <constructor-arg type="www.csdn.spring01.constructor.Dept" ref="dept"/>

         <constructor-arg type="java.lang.String" value="男" /> 

第三種方法:根據參數的名字傳值:(推薦用法)

在這幾種方法里我感覺這種方法是最實用的,他是根據名字來傳值的,所以基本上只要名字對了,這個值就可以獲取到  

         <constructor-arg name="name" value="劉曉剛" />

         <constructor-arg name="salary" value="3500" />

         <constructor-arg name="dept" ref="dept"/>

         <constructor-arg name="sex" value="男" />

第四種方法:直接傳值

 直接給參數賦值,這種方法也是根據順序排的,所以一旦調換位置的話,就會出現bug,這種方法已經很原始了

         <constructor-arg  value="劉曉剛" />

         <constructor-arg  value="3500" />

         <constructor-arg  ref="dept"/>

         <constructor-arg  value="男" />

    </bean>

<bean id="dept" class="www.csdn.spring01.constructor.Dept" >

 

  <property name="dname" value="北航"/>

  <property name="deptno" value="00001"/>

</bean>S


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM