Spring发现机制:轻松将实现同一接口的类注入到Map
在Spring中,我们可以使用`@ComponentScan`和`@Autowired`注解来实现这个功能。 首先,我们需要创建一个接口和一些实现这个接口的类: ```java public interface MyInterface { void doSomething(); } @Component("myImpl1") public class MyImpl1 implements MyInterface { @Override public void doSomething() { System.out.println("Doing something with MyImpl1"); } } @Component("myImpl2") public class MyImpl2 implements MyInterface { @Override public void doSomething() { System.out.println("Doing something with MyImpl2"); } } ``` 然后,我们可以在配置类中使用`@ComponentScan`注解来扫描包含这些类的包: ```java @Configuration @ComponentScan("com.example.myapp") public class AppConfig { // ... } ``` 接下来,我们可以创建一个类来存储这些实现类,并使用`@Autowired`注解来自动注入它们: ```java public class MyClass { private final Map<String, MyInterface> myInterfaceMap = new HashMap<>(); @Autowired public MyClass(@Qualifier("myImpl1") MyInterface myImpl1, @Qualifier("myImpl2") MyInterface myImpl2) { myInterfaceMap.put("myImpl1", myImpl1); myInterfaceMap.put("myImpl2", myImpl2); } // ... } ``` 在这个例子中,`@Qualifier`注解用于指定我们要注入哪个实现类。如果没有这个注解,Spring将会随机选择一个实现类进行注入。 ######[AI写代码神器 | 332点数解答 | 2023-11-22 10:12:10]
- Spring框架实战:从配置到实现,搞定员工信息查询功能(GPT | 2135点数解答 | 2024-06-12 08:32:35)321
- IntelliJ IDEA 搭建 Spring Boot 项目:从创建到 JPA 实体类及数据源配置全攻略(讯飞星火 | 920点数解答 | 2024-10-31 15:37:22)270
- Java 实战:创建 Vehicle 接口并在 Bike 类实现,T4 类调用启动与停止方法(字节豆包 | 130点数解答 | 2024-09-19 17:40:54)425
- Python 实现移位与仿射密码:精准加密解密及关键逻辑解析(字节豆包 | 798点数解答 | 2024-12-18 15:55:47)267
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)362
- Java中FastJSON解析JSON字符串的优化方案及开发建议(字节豆包 | 674点数解答 | 2026-04-03 13:17:19)20
- Python 代码转 C++:计算花朵鲜艳值总和(字节豆包 | 408点数解答 | 2026-04-19 21:50:57)3
- 车载系统 UML 类图设计:涵盖 Car、Engine、娱乐系统等的完整类定义与关系解析 (字节豆包 | 760点数解答 | 2024-08-15 22:51:04)321
- Spring Boot 与 Vue 联手:轻松实现微信扫码登录全攻略(字节豆包 | 207点数解答 | 2025-05-13 09:12:19)174
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)333
- Golang揭秘:nil map 与空 map 的本质差异!(百度文心 | 264点数解答 | 2023-11-09 18:11:53)264
- 巧用箭头函数和 map 方法:将数组元素轻松翻倍!(阿里通义 | 178点数解答 | 2024-10-29 09:35:26)191