Spring注入一個map的含義


今天偶然在網頁留言上發現,有人說用@Autowired

可以注入bean到聲明的map中,當時我還不信,怎么可能呢,@Autowired只用過向定義的類型中注入bean,map跟bean非親非故,怎么會注入那些實例,於是試驗了一下,果然靈驗

@Autowired
private Map<String, BizService> map = new HashMap<>();// 向map中注入所有類型為BizService類型的bean,其中鍵為bean的名稱,值為bean的實例.

像上面這些注入一個map,類型必須是這樣: Map<String, T> map ,即: 鍵必須是String類型, 值可以是任意類型

這樣的話,這個map就會將context中所有類型為T的bean都注入到這個map中了.

分析一下原理,也是很容易實現的,只不過以前沒朝這方面想而已

在context啟動過程中, 會加載所有的bean到bean工廠中,如果發現有用@Autowired標記的Map類型,那就注入

注入的時候,看map的值類型,然后遍歷所有的bean,根據類型放進去就行了.

有了這個東西,以后遇到自定義的bean,都可以自動放入單獨的map中,隨時供自己調用和處理了,很是方便.

同理: List也可以根據bean的類型自動注入.原理同map.
=============補充=================

使用基於JSX-RS規范的@Inject注解不能注入,原因尚未探索.


免責聲明!

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



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