【Spring】 Spring 之 autowire(自動裝配) : ByName 和 ByType


【愛迪】Spring 之 autowire(自動裝配)  : ByName 和 ByType

 

 

 

    我們給People類里 嵌的 Dog 和 Cat 類,在 bean.xml 文件里添加配置(有一個類就要配置一個) ,

     beans.xml 在向 People 類中的這兩個 類屬性 注入引用 時可自動裝配:

   1. autowire = "ByName" 

     ByName : 會自動在 beans.xml(容器)的上下文中查找  和自己對象中 set方法  set后面的值對應的  bean 的 id。

  比如: 上圖 圖二 需要再注入 cat 和 dog ,當使用 ByName 參數時:

       Spring 會將 自己類中 set方法中圖二紅框中內容和 beans,xml 里 我配置的 兩個 Dog 和 Cat 的 bean 的 id 進行對比,結果相同則裝配成功。

 

  優點:消除重復代碼

    缺點:當 set后的值 與 bean 的 id 不相同,對比失敗時,Spring 將無法完成自動裝配,程序報錯 (java.lang.NullPointerException

 

 

 


 

 

 

 

 

  2. autowire="byType"

    byType:會自動在beans.xml(容器)上下文中查找,和自己 對象的屬性類型 相同的 bean。

 

 

 

   比如:此時 Spring 比對的是,beans.xml 中其他 bean 的 屬性類型 是否 和自己要裝配的 屬性類型 相同,由於 我配置了 兩個 bean 分別是 Cat 類 和 Dog 類,和 圖二自己類中 兩個屬性的 類型 相同,所以裝配成功。

  

  優點:同上

    缺點:當配置的多個bean中 有同樣類型的時,Spring 將無法完成自動裝配,程序出錯 (提示不只有一個該類型 的bean

 

 

 

總結:    

  ByName :需要保證 beans.xml 中所有bean 的 id 唯一,並且 這個 bean 的 id 要和 自己對象中 set 后面的值的 相同。

  ByType : 需要保證 beans.xml中 所有bean的class唯一,並且 這個bean 要和 自己對象中 自動注入的 屬性的類型 要一致。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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