Spring的接口集合注入功能
2023-03-07 09:38:30 时间
Spring的接口集合注入功能
对于Spring中已经注入的bean, 可以使用Autowired
, 通过Map<String, BeanInterface>
或List<BeanInterface>
的方式直接注入
实现步骤
- 定义一个接口
- 实现这个接口的一系列类, 都加上 @Component 或者 @Service 注解, 使其成为 spring bean
- 在其他类中, 通过
@Autowired private Map<String, InterfaceName> interfaceMap;
或@Autowired private List<InterfaceName> interfaceList;
可以得到上面定义的类的bean映射或列表- 对于Map, Spring会将实例化的bean放入value, key则为bean的名称
- 对于List,列表就是实例化的bean
- 如果要控制list中的顺序, 在实现类中加入@Order(value) 注解, 值越小越先被初始化越先被放入List
验证
先定义一个接口
public interface GenericService {
void breath();
}
然后定义接口的实现类
// Dog.java
@Service("dog-control")
public class Dog implements GenericService {
@Override
public void breath() {
System.out.println("dog breath");
}
}
//Cat.java
@Component
public class Cat implements GenericService {
@Override
public void breath() {
System.out.println("cat breath");
}
}
在Demo类中引用
@Component
public class Demo {
@Autowired
private Map<String,GenericService> GenericServiceMap;
@Autowired
private List<GenericService> GenericServiceList;
public void dogBreath() {
this.GenericServiceMap.get("dog-control").breath();
}
public void firstBreath() {
this.GenericServiceList.get(0).breath();
}
}
测试用例
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestApplicationTests {
@Autowired
private com.service.Demo demo;
@Test
public void testMap(){
demo.dogBreath();
}
@Test
public void testList(){
demo.firstBreath();
}
}
相关文章
- Spring事务管理报错Transaction rolled back because it has been marked as rollback-only
- 【springboot2.x】集成knife4j
- Linkedin领英怎么导出非好友电话、邮箱等资料?
- 利用高带宽无线代替电缆应用于脑机接口信号传输
- 好玩的ES--第四篇之聚合查询和集群
- 你知道吗?脑机接口训练会对大脑物质结构和功能产生影响
- 美推进脑机接口技术研发
- ES常用知识点整理第一部分
- 北师大吕海东教授课题组发现V2参与运动轮廓的感知
- Groovy实现热部署
- 收藏!“十四五”中国脑科学领域发展前瞻“一体两翼”+五项研究重点
- 同一肢体不同关节的运动想象过程中的多通道脑电图记录
- HTML技术入门
- 测试发文1
- 基于AI的便携式神经假肢让截肢14年患者操作自如,高精度、低延迟
- Nature子刊:复旦类脑院揭示大脑对语义和情景记忆的区分与处理机制
- 首个获得FDA批准的脑机接口设备:“突破性”脑机接口设备用于造福人类
- 北师大卢春明课题组发表论文揭示了亲子互动通过亲子大脑同步影响儿童认知能力的机制
- 情绪脑机接口:脑机接口概述专题三 | 从运动脑机接口到情绪脑机接口
- 干货|详解EEG脑电原理及两种主流脑电设备对比