利用@Autowire注入List/Map
Autowired注解
以往我认知里@Autowire可以注入单个Bean, 但实际上它可将所有继承了相同接口的Bean注入为List. 此外它还可以自动导入{beanName, interface}形式的Map. 话不多说, 直接上代码:
使用后自动导入依赖, 它可注解在接口对应的List上或者value为对象的Map上 ,直接上代码:
public interface BeanInterface {
public void say();
}
@Component
@Order(1)
public class BeanImplOne implements BeanInterface {
@Override
public void say() {
System.out.println("aaa");
}
}
@Component
@Order(2)
public class BeanImplTwo implements BeanInterface {
@Override
public void say() {
System.out.println("bbb");
}
}
编写测试类:
@Component
public class BeanInvoke {
@Autowired
List<BeanInterface> list;
@Autowired
Map<String, BeanInterface> map;
@Bean
public void test() {
for (BeanInterface beanInterface : list) {
beanInterface.say();
}
for (String s : map.keySet()) {
System.out.println(s + "-->" + map.get(s));
}
}
}
------------------------------------
aaa
bbb
beanImplOne-->com.wang.multiBean.BeanImplOne@74ecacc3
beanImplTwo-->com.wang.multiBean.BeanImplTwo@517a2b0
- Order: 继承了相同接口的实现类对应的Bean被注入的顺序
- Map的String为Bean的名字
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?