Spring的接口集合注入功能

对于Spring中已经注入的bean, 可以使用Autowired, 通过Map<String, BeanInterface>List<BeanInterface>的方式直接注入

实现步骤

  1. 定义一个接口
  2. 实现这个接口的一系列类, 都加上 @Component 或者 @Service 注解, 使其成为 spring bean
  3. 在其他类中, 通过 @Autowired private Map<String, InterfaceName> interfaceMap;@Autowired private List<InterfaceName> interfaceList;可以得到上面定义的类的bean映射或列表
    • 对于Map, Spring会将实例化的bean放入value, key则为bean的名称
    • 对于List,列表就是实例化的bean
  4. 如果要控制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的接口集合注入功能的更多相关文章

  1. 采用dom4j和反射模拟Spring框架的依赖注入功能

    Spring的依赖注入是指将对象的创建权交给Spring框架,将对象所依赖的属性注入进来的行为.在学习了dom4j后,其实也可以利用dom4j和反射做一个小Demo模拟Spring框架的这种功能.下面 ...

  2. Spring配置文件解析--集合注入方法

    <bean id="moreComplexObject" class="example.ComplexObject"> <property n ...

  3. Spring再接触 集合注入

    beans.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...

  4. 关于Spring IOC (DI-依赖注入)需要知道的一切

    关联文章: 关于Spring IOC (DI-依赖注入)你需要知道的一切 关于 Spring AOP (AspectJ) 你该知晓的一切 <Spring入门经典>这本书无论对于初学者或者有 ...

  5. 关于Spring IOC (DI-依赖注入)

    <Spring入门经典>这本书无论对于初学者或者有经验的工程师还是很值一看的,最近花了点时间回顾了Spring的内容,在此顺带记录一下,本篇主要与spring IOC相关 ,这篇博文适合初 ...

  6. 关于Spring IOC (DI-依赖注入)你需要知道的一切

    <Spring入门经典>这本书无论对于初学者或者有经验的工程师还是很值一看的,最近花了点时间回顾了Spring的内容,在此顺带记录一下,本篇主要与spring IOC相关 ,这篇博文适合初 ...

  7. Spring注解的(List&Map)特殊注入功能

    一.先看一个示例演示:spring注解的一个特殊的注入功能. 首先,是定义一个接口,3个实现类. public interface GreetService { public String sayHe ...

  8. 没想到吧,Spring中还有一招集合注入的写法

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是Hydra. Spring作为项目中不可缺少的底层框架,提供的最基础的功能就是bean的管理了.bean的注入相信大家都比较熟 ...

  9. 由一个RABBITMQ监听器死循环引出的SPRING中BEAN和MAPPER接口的注入问题

    1 @Slf4j 2 @RestController 3 @Component 4 public class VouchersReceiverController implements Message ...

  10. Spring集合注入

    1.集合注入 上一篇博客讲了spring得属性注入,通过value属性来配置基本数据类型,通过<property>标签的 ref 属性来配置对象的引用.如果想注入多个数据,那我们就要用到集 ...

随机推荐

  1. SqlSugar DbContext

    title: SqlSugar DbContext date: 2023-02-16 20:01:41 tags: SqlSugar categories: ORM description: 总结整理 ...

  2. [转帖]TLS/SSL (Schannel SSP) 中的密码套件

    https://learn.microsoft.com/zh-cn/windows/win32/secauthn/cipher-suites-in-schannel 密码套件是一组加密算法. TLS/ ...

  3. [转帖]细说ASCII、GB2312/GBK/GB18030、Unicode、UTF-8/UTF-16/UTF-32编码

    参考: <编码标准-GB2312 GBK GB18030> <字符编码笔记:ASCII,Unicode 和 UTF-8> <字体编辑用中日韩汉字Unicode编码表> ...

  4. K8S增加限制后的启动时间验证

    K8S增加限制后的启动时间验证 背景 前段时间看了下JVM载linux上面的启动时间, 进行过一些验证. 最近想着能够验证一下K8S上面的启动相关的信息 所以就整理了一下. 虽然没有特别好的结论, 但 ...

  5. [转帖]一文读懂 | 如何快速部署 OceanBase 开源版

    2021-11-281398 版权 本文涉及的产品 云数据库 RDS MySQL Serverless,0.5-2RCU 50GB 推荐场景: 学生管理系统数据库设计搭建个人博客 立即试用 云防火墙, ...

  6. [转帖]谁动了我的 CPU 频率 —— CPU 性能之迷 Part 2

    https://blog.mygraphql.com/zh/notes/low-tec/kernel/cpu-frequency/ 目录: 为何有本文 什么是动态 CPU 频率 什么是 p-state ...

  7. Oracle 监控客户端的连接数量趋势

    Oracle 监控客户端的连接数量趋势 背景 前期简单总结了table方式将表信息展示出来的方法 但是感觉这样非常不直观. 想着能够做出一个趋势来. 时序数据库的最佳的使用方式. 之前的确是太靠自己的 ...

  8. [转帖]MYSQL--表分区、查看分区

    https://www.cnblogs.com/pejsidney/p/10074980.html 一.       mysql分区简介 数据库分区 数据库分区是一种物理数据库设计技术.虽然分区技术可 ...

  9. [转帖]TiDB Lightning 在数据迁移中的应用与错误处理实践

    TiDB Lightning 在数据迁移中的应用与错误处理实践 作者简介:DBA,会点 MySQL,懂点 TiDB,Python. 个人主页:https://tidb.net/u/seiang/ans ...

  10. [转帖]龙芯总强调同频性能,是因奔腾4要到25+GHz才比得上酷睿11代单核

      https://baijiahao.baidu.com/s?id=1734320620568707041 闲话不说,先上图,是SPEC CPU 2006 int(单任务)测试的成绩: 上图中的成绩 ...