name用於指定乙個bean的別名,別名可以有多個,用逗號/空格/分號隔開
可以通過id或者name都可以獲取dog對應的bean
ioc結合面向介面程式設計才能真正實現解耦
面向介面程式設計:定義和實現分離,定義在介面中,實現在類中
獲取bean的時候盡量用更通用的型別接收,這樣可以接收更多型別
這裡如果需要將dog換成pig的話,只需要將beans.xml中class中的dog換成pig即可
每個容器中的bean在該容器內使用
如果有個bean是單例的,說明在當前容器內只有乙個例項
預設情況下,單例的bean在容器啟動,也就是容器載入後會立刻被例項化
單例的bean在呼叫getbean()的時候例項已經存在,所以該方法只是幫你獲取該bean
多例的bean是在請求的時候才會例項化,所以getbean()的呼叫會導致bean例項化
依賴注入的兩種方式:
1. 設值的方式注入-使用property標記
2.使用建構函式注入
2.1-使用constructor-arg標記
*constructor-arg標記說明該屬性是通過建構函式作為乙個引數進行注入
*name指定構造函式引數的名稱,value指定要注入的值,ref指定要注入的其他bean的id或名稱
*也可不設定name,也就是不設定引數的名字,但是需要確保引數的順序是對的
*也可不設定name,而是指定引數的索引,所以從0開始,所以建構函式的第乙個引數的索引是0,以此類推
*如果要注入引用的其他bean,name指定屬性的名稱,ref指定引用的其他bean的id或名稱
2.2spring提供另一種使用設值方式注入的簡潔寫法,但是仍然推薦使用property標記進行注入
標籤裡加上 xmlns:p=""
依賴注入可用於注入:
1. 簡單值:基本型別的資料和字串
2. 引用的其他bean,也就是依賴的其他物件
p:address-ref="addr2"
使用property(屬性)標記可以通過設值的方式給bean注入簡單值或引用的其他bean
這裡注入簡單值相當於給屬性設定乙個值,只是由spring幫你注入這個值
Spring自動裝配Map,List等集合
這個特性的其實還得歸納到 autowired的特性上,或者說 autowired包涵了一些我們不知道的能力。autowired private mapbasevalidatecodegenerators 在spring中,寫這種形式的 spring能自動裝配值到map中,這種裝配不是簡單的給map賦...
spring自動裝配Map,List等集合
現在有乙個策略的工廠 component public class strategyfactory 乙個抽象類,兩個實現類 public abstract class taskhandle component public class taskhandleone extends taskhandle...
spring裝配集合
前面我們已經了解了如何使用spring裝備簡單的屬性 使用value屬性 和引用其他bean的屬性 使用ref屬性 但是value和ref僅在bean的屬性值是單個值的情況下才有用。當bean的屬性值是複數時 如果屬性的型別是集合。當配置集合型別的bean屬性時,spring提供了4種型別的集合配置...