顯式裝配spring
自動裝配Bean屬性ui
一共有四種自動裝配類型(須要在Bean配置裏添加autowire屬性來指定用哪一種類型)
spa
byName-把與Bean的屬性具備相同名字或ID的其餘Bean自動裝配到Bean的對應屬性中。若是沒有跟屬性的名字相匹配的Bean,則該屬性不進行裝配。--實際上對比的是Bean ID。io
byType-把與Bean的屬性具備相同類型的其餘Bean自動裝配到Bean的對應屬性。若是沒有跟屬性的類型相匹配的Bean,則該屬性不被裝配。侷限性:若是Spring找到多個Bean,它們的類型都與須要自動裝配的屬性的類型相匹配,這個時候SPring不會猜想哪個更適合,而是拋出異常。不過提供了以下參數來指定用哪一個Bean來注入。<bean>元素的primary屬性。若是該值爲true,那麼該Bean將比其餘候選Bean優先被選擇。默認都是true。若是但願排除某些Bean做爲候選者,那麼能夠設置它們的autowire-candidate屬性爲false.則它們都會被忽略做爲候選Bean.require
constructor-把與Bean的構造器入參具備相同類型的其餘Bean自動裝配到Bean構造器的對應入參中。配置
autodetect-首先嚐試使用constructor進行自動裝配,若是失敗,則再嘗試使用byType進行自動裝配。
date
使用註解裝配
引用
2.5引入註解裝配,與在XML中使用autowire屬性自動裝配無太大差異。默認禁用註解裝配。若需使用,則須要在spring中啓用它。<context:annotation-config/>.spring支持以下幾種用於自動裝配的註解
方法
Spring自帶的@Autowired註解im
JSR-330的@Inject註解
JSR-250的@Resource註解
1:使用@Autowired註解:能夠標註於setter方法,標註於須要自動裝配Bean引用的任意方法;甚至能夠標註構造器;還能夠直接標註屬性,並刪除setter方法,甚至都不會受限於private關鍵字。
有兩種侷限:沒有匹配的Bean,或者存在多個匹配的Bean.
a)可選的自動裝配。 默認狀況下,@Autowired具備強契約特徵,其所標註的屬性或參數必須是可裝配的。若是沒有Bean能夠裝配到@Autowired鎖標註的屬性或參數中,自動裝配就會失敗。屬性亦可設置成null,經過設置該註解的required屬性爲false來配置自動裝配是可選的。
b)限定歧義性的依賴:當有多個Bean都徹底知足裝配條件,而且均可以被裝配到屬性或參數中的狀況時,爲了幫助@Autowired鑑別出哪個Bean纔是所須要的,可使用限定器註解@Qualifier。咱們亦能夠自定義限定器(Qualifier)