平常我们见得多的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,就可以设计做出比较简洁易懂的程序的。
本文介绍了一种使用Spring框架注入多个相同类型Bean到List中的技巧。当存在多个名称不同的相同类型Bean时,可通过注入List<BeanType>来解决注入问题。

4591

被折叠的 条评论
为什么被折叠?



