Spring的接口集合注入功能
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的接口集合注入功能的更多相关文章
- 采用dom4j和反射模拟Spring框架的依赖注入功能
Spring的依赖注入是指将对象的创建权交给Spring框架,将对象所依赖的属性注入进来的行为.在学习了dom4j后,其实也可以利用dom4j和反射做一个小Demo模拟Spring框架的这种功能.下面 ...
- Spring配置文件解析--集合注入方法
<bean id="moreComplexObject" class="example.ComplexObject"> <property n ...
- Spring再接触 集合注入
beans.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...
- 关于Spring IOC (DI-依赖注入)需要知道的一切
关联文章: 关于Spring IOC (DI-依赖注入)你需要知道的一切 关于 Spring AOP (AspectJ) 你该知晓的一切 <Spring入门经典>这本书无论对于初学者或者有 ...
- 关于Spring IOC (DI-依赖注入)
<Spring入门经典>这本书无论对于初学者或者有经验的工程师还是很值一看的,最近花了点时间回顾了Spring的内容,在此顺带记录一下,本篇主要与spring IOC相关 ,这篇博文适合初 ...
- 关于Spring IOC (DI-依赖注入)你需要知道的一切
<Spring入门经典>这本书无论对于初学者或者有经验的工程师还是很值一看的,最近花了点时间回顾了Spring的内容,在此顺带记录一下,本篇主要与spring IOC相关 ,这篇博文适合初 ...
- Spring注解的(List&Map)特殊注入功能
一.先看一个示例演示:spring注解的一个特殊的注入功能. 首先,是定义一个接口,3个实现类. public interface GreetService { public String sayHe ...
- 没想到吧,Spring中还有一招集合注入的写法
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是Hydra. Spring作为项目中不可缺少的底层框架,提供的最基础的功能就是bean的管理了.bean的注入相信大家都比较熟 ...
- 由一个RABBITMQ监听器死循环引出的SPRING中BEAN和MAPPER接口的注入问题
1 @Slf4j 2 @RestController 3 @Component 4 public class VouchersReceiverController implements Message ...
- Spring集合注入
1.集合注入 上一篇博客讲了spring得属性注入,通过value属性来配置基本数据类型,通过<property>标签的 ref 属性来配置对象的引用.如果想注入多个数据,那我们就要用到集 ...
随机推荐
- 码农的转型之路-IoTBrowser(物联网浏览器)雏形上线
消失了半个月闭门造轮子去了,最近干了几件大事: 1.工控盒子,win10系统长时间跑物联网服务测试.运行快2周了,稳定性效果还满意,除了windows自动更新重启了一次. 2 .接触了一些新概念MQT ...
- [转帖]AL32UTF8/UTF8(Unicode)数据库字符集含义 (文档 ID 1946289.1)
AL32UTF8/UTF8(Unicode)数据库字符集含义 (文档 ID 1946289.1) 适用于: Oracle Database Cloud Schema Service - 版本 N/A ...
- [转帖]Redhat、CentOS添加静态路由的方法
https://www.diewufeiyang.com/post/1174.html 我们经常遇到需要在系统默认路由的基础上,额外添加静态路由的需求.为了使得下次系统启动这些静态路由依旧生效,我们可 ...
- SPECJVM2008 再学习
SPECJVM2008 再学习 摘要 昨天的太水了 感觉今天有必要再水一点.. 存在的问题 默认进行启动 sunflow 必定过不去. 一般的解决办法要求进行重新编译 但是我不知道怎么下载源码... ...
- [转帖]JAVA之G1垃圾回收器
https://www.cnblogs.com/boanxin/p/12292331.html 概述 G1 GC,全称Garbage-First Garbage Collector,通过-XX:+Us ...
- 部分信创CPU算力与IntelCPU的简单比较
部分信创CPU算力与IntelCPU的简单比较 摘要 最近一直想查看一下国产和非国产的CPU的性能比较 从最开始学习研究 sysbench 到周五晚上开始学习 stress-ng 今天查看github ...
- 【JS 逆向百例】某音 X-Bogus 逆向分析,JSVMP 纯算法还原
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容.敏感网址.数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许 ...
- 百度指数 Cipher-Text、百度翻译 Acs-Token 逆向分析
K 哥之前写过一篇关于百度翻译逆向的文章,也在 bilibili 上出过相应的视频,最近在 K 哥爬虫交流群中有群友提出,百度翻译新增了一个请求头参数 Acs-Token,如果不携带该参数,直接按照以 ...
- Typora 1.6.7永久激活
介绍Typora介绍 具体看上面的我就不多介绍了 接下来我们开始教程 需要的文件 Typora安装包 破解补丁包 安装包下载 破解补丁下载 接下来我们全部下载后获得一个安装包一个补丁 安装包直接安装就 ...
- 在ECS中安装Docker在内部访问RDS数据库
Navicat连接阿里云RDS数据库入门 https://blog.csdn.net/fenxunkao0106/article/details/106594276 https://www.cnblo ...