Spring 之@Autowired注入集合类List、Set、Map

@Autowired 到底是怎么把变量注入进来的? 在 Spring 容器中,当我们想给某一个属性注入值的时候,有多种不同的方式,例如可以通过构造器注入、可以通过 set 方法注入,也可以使用 @Autowired、@Inject、@Resource 等注解注入。今天就来和小伙伴们聊一聊,@Autowired 到底是如何把数据注入进来的。 阅读详情

首先创建一个接口和两个实现类:

public interface BeanInterface {
}

@Component
public class BeanImplOne implements BeanInterface {
}

@Component
public class BeanImplTwo implements BeanInterface {
}

下面将这两个实现类实例注入到集合中:

@Component
public class BeanInvoke {
    @Autowired
    private List<BeanInterface> beanInterfaceList;
    @Autowired
    private Map<String, BeanInterface> beanInterfaceMap;
    @Autowired
    private Set<BeanInterface> beanInterfaceSet;

    public void say() {
        System.out.println("list...");
        if (null != beanInterfaceList && 0 != beanInterfaceList.size()) {
            for (BeanInterface bean : beanInterfaceList) {
                System.out.println(bean.getClass().getName());
            }
        }
        System.out.println("map...");
        if (null != beanInterfaceMap && 0 != beanInterfaceMap.size()) {
            for (Map.Entry<String, BeanInterface> m : beanInterfaceMap.entrySet()) {
                System.out.println(m.getKey() + "    " + m.getValue().getClass().getName());
            }
        }
        System.out.println("set...");
        if (null != beanInterfaceSet && 0 != beanInterfaceSet.size()) {
            for (BeanInterface bean : beanInterfaceSet) {
                System.out.println(bean.getClass().getName());
            }
        }
    }
}

测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootDemoApplicationTests {

    @Autowired
    BeanInvoke beanInvoke;

    @Test
    public void test1(){
        beanInvoke.say();
    }
}

结果:
list...
com.demo.spring.BeanImplOne
com.demo.spring.BeanImplTwo
map...
beanImplOne    com.demo.spring.BeanImplOne
beanImplTwo    com.demo.spring.BeanImplTwo
set...
com.demo.spring.BeanImplOne
com.demo.spring.BeanImplTwo

看到已经将两个实例注入到集合中了。

@Autowired 注解的实现原理 @Autowired注解我们实际工作和学习中,用的是比较频繁的。这篇文章主要是结合源码了解它的实际工作过程即是怎么把我们需要的类注入到我们类中的。@Autowired注入过程,实际上分为三个方面:1、元信息解析;2、依赖查找;3、依赖注入(字段、方法)。 元信息解析,在处理过程中,有一个类叫DependencyDescriptor,比如说我们的依赖描述器或者依赖描... 阅读详情

相关推荐

Spring使用@Autowired将实现类注入List或者Map中

前言 在看一些框架源码或者直接做一些项目的时候经常会将bean自动注入到List或者Map中,我是在调试源代码的时候看到这种写法的,然后就想起这玩意,记录一下这种自动注入的写法,下面我们就来看看这个具体怎么玩 编码 1.定义一个接口 public interface MP{ void perform(); } 2.编写MP的实现类 @Component public class MPAImpl implements MP{ @Override public void perform() {

程序员劝退师的博客 3885

SpringBoot中 使用@Autowired 将bean注入到List或Map等集合中

在SpringBoot开发中,当一个接口A有多个实现类时,spring会很智能的将bean注入到List<A>或Map<String,A>变量中。 一、SpringBoot中注入List或Map 举例说明如下: 步骤1:定义一个接口 public interface IPerson { void doWork(); } 步骤2:对该接口做第一个实现类 i...

IT- 研究者 3万+

手把手教你用QEMU模拟AST2600-EVB开发板:OpenBMC环境搭建全流程

本文提供了一份详尽的实战指南,手把手教你使用QEMU模拟器搭建AST2600-EVB开发板的OpenBMC环境。内容涵盖从工具链准备、系统镜像获取(官方与自编译),到QEMU启动命令解析、网络配置(用户与桥接模式),以及通过SSH、WebUI和Redfish API访问服务的全流程,帮助开发者在个人电脑上快速构建安全、可复现的嵌入式开发与测试沙盒。

play7的博客 1132

详解Spring@AutoWired多种方式的依赖注入——List,Map类型

在Spring框架进行bean对象依赖注入时,@Autowired利用可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。@Autowired可标注在成员变量,也可以标注在成员变量的set方法上,以及类得构造函数上。对于标注在成员变量上的方式,通常的做法是标注在单个类型的变量上,Spring框架提供了强大的DI能力能够实现对Collection类型的自动注入。

qq_43842093的博客 2553

OLLAMA_HOST环境变量设置全攻略:从127.0.0.1到局域网共享的完整配置

本文详细解析了OLLAMA_HOST环境变量的核心作用与配置方法,指导用户如何将Ollama服务从仅限本机访问(127.0.0.1)扩展到局域网共享。文章涵盖了macOS、Linux、Windows三大平台的实战配置步骤,并提供了安全加固、性能优化及常见故障排查方案,是解决多设备协作访问本地AI模型的完整指南。

weixin_28455801的博客 1896

〖进阶篇1〗YAML参数解析:从nav2_params.yaml看机器人导航调优

本文深入解析了ROS2 Nav2导航系统中关键的nav2_params.yaml文件,提供了从定位、行为树、运动控制到环境感知等核心模块的参数调优实战指南。文章通过具体场景案例,如狭窄走廊、动态仓库和高精度对接,详细阐述了如何调整AMCL粒子数、控制器权重、代价地图膨胀半径等参数,以解决机器人导航中的犹豫、碰撞和精度问题,帮助开发者实现从“能用”到“好用”的进阶。

m9n0o的博客 417

Spring @Value 注入集合List、Set、Map

1、对于@Autowired声明的数组、Collection集合的注入,Spring会把容器中所有类型与数组(集合)中元素类型相同的bean汇总,构造出一个数组(集合),注入到目标数组(集合)中。 2、对于@Autowired声明的map集合的注入,map的key注入容器中所有类型与bean类型相同的bean的id,value注入该bean的id对应的对象。 3、对于类对象注入,@Qualifier(“payServiceImpl1”)指定注入对象的id 。...

weixin_40017062的博客 1万+

Unity3D Lua与C#的相互调用与性能剖析详解

在游戏开发中,经常会遇到Lua与C#之间的相互调用的情况。本文将详细介绍Unity3D中Lua与C#的相互调用的方式,并对其性能进行剖析。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!一、Lua与C#的相互调用方式Lua调用C#在Unity3D中,可以通过Lua调用C#的方式来实现Lua与C#的相互调用。具体步骤如下:(1)首先需要在Unity3D项目中导入Lua的相关库,例如tolua或者xlua。

weixin_49669470的博客 1212

Spring 注入 Bean 到 List / Map 中

将注入的Bean 放在List或者Map中: /* * spring会自动将 DemoService 的所有实现类bean注入到list集合 */ @Autowired private List<DemoService> demoServices; /* * 通过Map注入,通过 spring bean 的名称作为key动态获取对应实例 */ @Aut...

AI天才研究院 1万+

SAP 费用化采购订单简介

费用性采购的核心特点费用性采购的流程费用性采购的优势适用场景业务场景前台操作1、创建成本中心---KS012、创建采购订单---ME21N3、采购订单审批---ME29N4、采购订单收货---MIGO5、查看成本中心费用---S_ALR_870136116、控制费用化的采购订单自动带出科目和成本中心SAP费用性采购(Expense Procurement)指的是企业在采购过程中,直接将采购的物料或服务成本计入费用科目,而不是记入库存账户的采购行为。

我小时候很黑的博客 2016

C++ PCL点云处理实战专栏

工业级点云处理技术学习资源,涵盖电力、建筑、隧道等领域的实战案例。内容分为三阶段:代码原理(算法认知)、动态库(项目验证)和完整代码(定制开发)。

weixin_45196569的博客 1117

Spring @Autowired 注入到List和Map

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34179968的博客 4095

S/4HANA Private Cloud 与 On-Premise 的 Key User Custom Fields 运输与升级避坑指南

本文探讨了SAP S/4HANA Cloud Private Edition和On-Premise系统中Key User Custom Fields的管理要点。文章指出,Custom Fields涉及元数据生成、对象一致性、传输治理等完整链路,操作不当会导致字段丢失或升级失败。关键建议包括:使用ATO Fiori App管理扩展项与传输绑定,配置正确的job user权限,避免在多系统并行开发同一字段。特别强调升级时需执行CFD_REGENERATE_IN_ONPREMISE报表,并通过标准传输机制推进变更

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 195

@Autowired注入Map,List

@Autowired可以自动注入Map和List public interface UserService { } @Order(2) @Component("userServiceA") public class UserServiceA implements UserService{ } @Order(1) @Component("userServiceB") public class...

ZMPRESS 1301

用 ABAP RAP + XCO 把 Excel 导入业务对象:从弹窗 Action 到 EML 落库与附件清理的完整实践

摘要:本文介绍了在SAP RAP框架下实现Excel批量导入功能的完整方案。通过XCO库的XLSX模块解析Excel文件,结合RAP的行为定义和Fiori Elements界面集成,构建了一个支持试运行、数据校验和自动合并的业务导入功能。方案采用RAP标准范式,包括Action参数设计、EML事务处理、附件管理以及异常消息反馈,实现了从文件上传到数据落库的端到端流程,既保证了系统稳定性,又提升了业务用户体验。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 273

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【Spring】 注入 Bean 到 List / Map 中

将注入的Bean 放在List或者Map中: /* * spring会自动将 DemoService 的所有实现类bean注入到list集合 */ @Autowired privat...

AI天才研究院 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

掌握Spring Framework集合注入:List、Set、Map依赖注入终极指南

Spring Framework作为Java开发的事实标准,提供了强大的依赖注入功能,其中集合类型注入是日常开发中不可或缺的技能。本文将带你全面了解如何在Spring中优雅地注入List、Set和Map集合,掌握配置技巧与最佳实践,让你的依赖管理更加灵活高效。 ## 为什么需要集合注入? 在实际开发中,我们经常需要处理多个同类型的Bean或键值对数据。例如: - 多个日志处理器组成的责任链 -

gitblog_00409的博客 1036

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Spring 注解实例--@Autowired 注入到List和Map

package com.Autowired.ListMap; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; /** * order:把实现类排序输出 只适合List * @author liu * */ @Order(2) @Compon

小白鼠丶 3万+

什么?@Autowired还能这么玩?Map、List注入技巧,彻底刷新我的认知

一次支付渠道的紧急扩容,一个`switch-case`堆砌的屎山,差点在上线夜里送走整个项目。重构时,我仅用一行`@Autowired`注入了一个Map,就替换掉了上百行腐烂的逻辑判断,实现了即插即用的策略模式。这个“小技巧”背后,是Spring IoC容器强大的依赖注入、Bean生命周期与作用域管理体系。本文将从这个实战场景切入,击穿Spring Bean的创建、注入和作用域三大核心,让你彻底告别只会用`@Service`的初级阶段,掌握构建高内聚、低耦合系统的精髓。

专注生产事故复盘。这里没有空洞理论,只有从P0级告警中打捞出的源码级真相和企业级填坑指南,带你从“踩坑”到“封神”。 2036

@Autowired自动注入map

参考文档https//my.oschina.net/u/1000241/blog/3029017。适用于一个接口有多个实现类,然后根据不同的参数选择执行不同的实现类,其实这种通过@Autowired注入map(接口有多个实现类),这里有三个实现类,都实现了KakfaStrategy接口;除了可以注入到map中,也可以注入到list等其他集合中;spring是支持基于接口实现类的直接注入的;支持注入map,list等。中,不用做其他的配置,直接注入;这种方式多用于策略模式中。......

6318

Spring @Autowired Map 和 List

在开发的时候有时候经常会看到这样代码 这是Spring的一个特殊的注入功能 如图所示 当注入一个Map的时候 ,value泛型为MaoService,则注入后Spring会将实例化后的bean放入value ,key则为注入后bean的名字 当注入一个List的时候,List的泛型为MaoService,则注入后Spring会将实例化的bean放入List中 做个测试 首先定义一个接口 pac...

fulinlin的博客 1万+

Spring 高级操作:教你如何优雅注入 List 和 Map 集合

在 Spring 的世界里,依赖注入(DI)是一个至关重要的概念。它让我们能够轻松地将不同的组件组合成一个功能强大的应用。而说到集合类注入,Spring 的魔力就显现得更加淋漓尽致了!今天,我们要探讨的就是如何优雅地将 List 和 Map 集合注入到 Spring Bean 中,让你的代码既简洁又高效。让我们一起进入这个充满魔法的世界!通过 Spring 提供的依赖注入(DI)机制,注入 List 和 Map 集合变得非常简单而优雅。无论是自动注入,还是通过@Value。

龚小帅的博客 977

记Spring注解@Autowired和@Resource特殊注入功能

Spring注解的(List&Map)特殊注入功能 一、先看一个示例演示:spring注解的一个特殊的注入功能。 首先,是定义一个接口,3个实现类。 复制代码 public interface GreetService { public String sayHello(String name); } @Service(“china”) public class ChinaGreetSer...

小菜鸟的博客 1754

@Autowired注解注入map、list与@Qualifier

package com.imooc.beanannotation.multibean; public interface BeanInterface { } package com.imooc.beanannotation.multibean; import org.springframework.core.annotation.Order; import org.springframewo...

攻城狮不是猫 3261
上一篇: MyBatis 之自己实现一个MyBatis框架
下一篇: Java开发 之分割List、获取两个List中不同的元素
yyangqqian
博客等级 码龄15年 406粉丝 406原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值