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,就可以设计做出比较简洁易懂的程序的。

猜你喜欢

转载自blog.csdn.net/xiucaiyao/article/details/39086537
今日推荐