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 属性来配置对象的引用.如果想注入多个数据,那我们就要用到集 ...
随机推荐
- 国庆学go,完成了博客基本功能,迫不及待的发布上线了
大家好,我是沙漠尽头的狼. 国庆7天,利用带娃之余的空闲时间学习了go,并做了一个不是很完善的博客前台网站. 网站发布地址:https://go.dotnet9.com 源码 边做边上传Github, ...
- Laravel路由匹配
Route常规用法如下,特别是最后一个传参之后可以进行正则匹配,非常好用. //@后面内容为所要访问的方法 Route::get('foo', 'Photos\AdminController@meth ...
- ORA-00947:Not enough values (没有足够的值)
1.问题 2.解决方式 大概率是关系表实际列数大于你所填的元素个数,请检查是否有疏漏的列即可. 我这里是以为代理键直接忽略不写即可,没有标明具体插入列,但是还是得标明才行 --创建图书目录表TITLE ...
- Linux系统下安装JDK8和Maven3.8.5
一.下载JDK8Linux版本 官网下载太慢了,小编这里为大家下载好了: 链接:百度网盘地址 提取码:ov24 二.下载Maven maven3.8.5下载链接 三.使用xftp上传到linux上 四 ...
- phpcms: Warning: "continue" targeting switch is equivalent to "break" 解决方案
Warning: "continue" targeting switch is equivalent to "break". Did you mean to u ...
- 微信小程序——如何获取url中的数据
如何获取url中的数据 这里举个例子! 当我们需要编辑一个可以点击的图片超链接 这时候结构是这个样子的 首先最外层有一个视图层view 在view中添加超链接标签<navigator> & ...
- [转帖]开源软件项目中BSD、MIT许可证合规问题探析
https://www.allbrightlaw.com/CN/10475/3be2369275d19e9e.aspx [摘要]本文将探析BSD开源许可证(Berkeley Software Di ...
- [转帖] Linux命令拾遗-文本处理篇
https://www.cnblogs.com/codelogs/p/16060413.html 简介# 这是Linux命令拾遗系列的第二篇,本篇主要介绍Linux中与文本处理相关的命令,如xargs ...
- OpenEuler2203使用rpm方式安装Oracle19c的过程
OpenEuler2203使用rpm方式安装Oracle19c的过程 安装介质 oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm oracle-d ...
- lldb3.9.0 安装攻略
Study From https://github.com/dotnet/diagnostics/blob/master/documentation/lldb/centos7/build-instal ...