Spring註釋@Qualifierweb
舉例,一般在使用註解註釋的時候,咱們會使用@Autowired,但該註解只能注入惟一bean,也就是不存在
繼承或其餘關係的bean ,若是 要是用多態形式的注入那麼就須要 @Qualifier註解了工具
如:交通工具類Vehicle car bus 三個bean很明顯car bus 繼承Vehicle
可是service中寫好了使用Vehicle 進行注入,但。我只想用car進行操做,這時候若是還用@A註解,就只能V類
使用@Q就能夠實現多態的形式爲Vehicle注入car bean orm
@Qqualifier("car")繼承
Spring中何時用@Resource,何時用@service
當你須要定義某個類爲一個bean,則在這個類的類名前一行使用@Service("XXX"),就至關於講這個類定義爲一個bean,bean名稱爲XXX;
當須要在某個類中定義一個屬性,而且該屬性是一個已存在的bean,要爲該屬性賦值或注入時在該屬性上一行使用@Resource(name="xxx"),至關於爲該屬性注入一個名稱爲xxx的bean。it
===================================================================================================service
Spring不但支持本身定義的@Autowired註解,還支持幾個由JSR-250規範定義的註解,它們分別是@Resource、@PostConstruct以及@PreDestroy。
@Resource的做用至關於@Autowired,只不過@Autowired按byType自動注入,而@Resource默認按 byName自動注入罷了。@Resource有兩個屬性是比較重要的,分是name和type,Spring將@Resource註解的name屬性解析爲bean的名字,而type屬性則解析爲bean的類型。因此若是使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。若是既不指定name也不指定type屬性,這時將經過反射機制使用byName自動注入策略。
@Resource裝配順序
1. 若是同時指定了name和type,則從Spring上下文中找到惟一匹配的bean進行裝配,找不到則拋出異常
2. 若是指定了name,則從上下文中查找名稱(id)匹配的bean進行裝配,找不到則拋出異常
3. 若是指定了type,則從上下文中找到類型匹配的惟一bean進行裝配,找不到或者找到多個,都會拋出異常
4. 若是既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配;若是沒有匹配,則回退爲一個原始類型進行匹配,若是匹配則自動裝配;webkit