Spring @Autowired 注入的一個小技巧

平常我們見得多的Spring @Autowired 注入很好理解,把一個Spring的bean 通過by type方式注入給一個變量,比如:

@Autowired

private PushMessageService pushMessageService;

這樣,Spring就會自己在容器裏找一個 PushMessageService  類型的bean注入。


今天我要說的,就是一個平時不太會想到的一個小技巧。假如系統裏有A,B,C,D,E 四個都是 PushMessageService 類型的不同名字的bean,那麼上面這種

注入方式就會報錯,系統找不到唯一此類型的bean注入!雖然你看不到A,B,C,D,E這五個bean在Spring容器中存在的方式,也不清楚它們放在哪。在這種情況

下,你可以注入一個List<PushMessageService >到你的變量中,比如 :

@Autowired

private List<PushMessageService> pushMessageServiceList;

Spring可自動把 A,B,C,D,E五個PushMessageService類型的bean放在一個List中,並注入到以上pushMessageServiceList中去的。這樣是不是很爽?哈哈。


JAVA的設計模式中的模板模式,代理模式等都有一些類型一樣的bean,如果以上面這種以List的方式注入到一個變量,到時通過服務定位、找各自bean的

特徵來調用各個bean,就可以設計做出比較簡潔易懂的程序的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章