今天来讲的一个你可能不曾注意的小东西,那就是Spring依赖注入支持注入Bean的类型,这个小东西可能看似没有用但是实际又有点小用。
其实本来这周没打算写文章,但是突然之间就想到了之前有个妹子问过这个问题,并且网上这块东西说的也不多,所以就赶在周末的末尾匆匆写下了这篇文章。
这东西本身也没有什么复杂的原理,所以本文也并没有什么太多深入剖析源码的东西。
1、普通对象
这没什么好说的,大家都这么用的,比如需要用到UserService,直接@Autowired就可以了。
@Autowired
private UserService userService;
2、Collection及其子接口
除了支持注入一个单一的对象之外,@Autowired还支持注入一个Collection对象。
比如说,现在有个消息通知的接口MessageNotifier
。
这种接口一般都会有不同的实现,比如说通过邮件通知,或者app,短信等等,所以就有多种实现,此时如果需要注入MessageNotifier
,就可以使用注入Collection的方式,比如
@Autowired
private List<MessageNotifier> messageNotifiers;
不过这种方式有个规定,那就是注入的类型必须是Collection及其子接口,如果你直接注入一个ArrayList
,那么此时是不支持的。
3、数组
同理,@Autowired可实现了注入一个数组的功能。
@Autowired
private MessageNotifier[] messageNotifiers;
代码如下:
4、Map
同样的,@Autowired还可以注入一个Map。
@Autowired
private Map<String, MessageNotifier> messageNotifierMap;
此时注入的map,key的类型就是bean的名称,这种方式可以配合策略模式使用。
不过,这种方式只支持注