本文基于SpringBoot 2.6.7 分析
开发中一个接口可能有多个实现类,而常见的使用方式是通过@Autowire
注入单个Bean,但
Spring中@Autowire
支持注入多个实现类的集合,支持的集合类型包括,数组
、Collection的子类接口
、List
、Map
类型。
并且还会对数组
和List
类型就行排序。
使用时,集合应该给接口类型,不要给具体实现类,否则报错。
相关文章:
Spring中@Autowire,@Value 注解实现原理
Spring中相同类型Bean存在多个时抛出异常分析及解决方案
示例:
@Service
public class HelloServiceImpl {
@Autowired
private Iface[] ifaceArray;
@Autowired
private List<Iface> ifaces;
@Autowired
private Map<String, Iface> ifaceMap;
}
源码分析如下:
排序实现类是org.springframework.core.annotation.AnnotationAwareOrderComparator
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)