详解 Spring注解的(List&Map)特殊注入功能
发布时间 - 2026-01-11 01:04:06 点击率:次详解 Spring注解的(List&Map)特殊注入功能

最近接手一个新项目,已经没有原开发人员维护了。项目框架是基于spring boot进行开发。其中有两处Spring的注解花费了大量的时间才弄明白到底是怎么用的,这也涉及到spring注解的一个特殊的注入功能。
首先,看到代码中有直接注入一个List和一个Map的。示例代码如下:
@Autowired private List<DemoService> demoServices; @Autowired private Map<String,DemoService> demoServiceMap;
以上是两处代码示例化之后的demo。当时看到这里之后有些懵,全局搜索之后并没有发现定义一个List和Map的对象。然而debug运行之后却发现它们的确都有值。这个事情就有些神奇了。在网上搜索也收获甚微。
最后在调试List的时候突然灵感一闪,如果只有一个对象那么List里面的值不就只有一个吗。于是开始测试验证,结果发现的确如此。当实例化一个DemoService之后,另外一个类采用泛型注入List,Spring竟然成功的将实例化的对象放入List之中。思路打开之后,针对Map的就更好说了。Spring会将service的名字作为key,对象作为value封装进入Map。
具体事例代码如下
DemoService代码:
package com.secbro.learn.service;
import org.springframework.stereotype.Service;
/**
* Created by zhuzs on 2017/5/8.
*/
@Service
public class DemoService {
public void test(){
System.out.println("我被调用了");
}
}
DemoController代码:
package com.secbro.learn.controller;
import com.secbro.learn.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
import java.util.Map;
/**
* Created by zhuzs on 2017/5/8.
*/
@Controller
@RequestMapping(value = "/demo")
public class DemoController {
@Autowired
private List<DemoService> demoServices;
@Autowired
private Map<String,DemoService> demoServiceMap;
@ResponseBody
@RequestMapping(value = "/test")
public String test(){
for(Map.Entry<String,DemoService> entry : demoServiceMap.entrySet()){
entry.getValue().test();
}
System.out.println("===============分割线=============");
for(DemoService demoService : demoServices){
demoService.test();
}
return "success";
}
}
运行之后,访问http://localhost:8080/demo/test 执行结果如下:
我被调用了 ===============分割线============= 我被调用了
原来,在不知不觉中Spring已经帮我们做了很多事情,只是我们不知道而已。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Spring注解的(List&Map)特殊注入功能
# Spring
# 注解
# List&Map注解
# springboot从application.properties中注入list
# map方式
# springboot注入yml配置文件 list报错的解决方案
# 详解Spring注入集合(数组、List、Map、Set)类型属性
# Spring 配置文件字段注入到List、Map
# spring中的注入list集合
# 只有一个
# 两处
# 分割线
# 都有
# 是怎么
# 中有
# 的确如此
# 这也
# 希望能
# 不就
# 另外一个
# 就更
# 涉及到
# 谢谢大家
# 会将
# 开发人员
# 后却
# 在网上
# 其中有
# 是基于
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
开心动漫网站制作软件下载,十分开心动画为何停播?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
如何在建站之星绑定自定义域名?
如何快速完成中国万网建站详细流程?
什么是javascript作用域_全局和局部作用域有什么区别?
Python并发异常传播_错误处理解析【教程】
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
MySQL查询结果复制到新表的方法(更新、插入)
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
高防服务器租用指南:配置选择与快速部署攻略
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
大连 网站制作,大连天途有线官网?
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
详解jQuery停止动画——stop()方法的使用
如何快速重置建站主机并恢复默认配置?
Laravel如何使用Service Container和依赖注入?(代码示例)
如何在VPS电脑上快速搭建网站?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
javascript日期怎么处理_如何格式化输出
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
如何用5美元大硬盘VPS安全高效搭建个人网站?
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
使用Dockerfile构建java web环境
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
网站建设整体流程解析,建站其实很容易!
昵图网官方站入口 昵图网素材图库官网入口
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Laravel如何配置和使用缓存?(Redis代码示例)
在线教育网站制作平台,山西立德教育官网?
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
网站建设保证美观性,需要考虑的几点问题!
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
手机网站制作与建设方案,手机网站如何建设?
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
制作旅游网站html,怎样注册旅游网站?
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
教学论文网站制作软件有哪些,写论文用什么软件
?
Python结构化数据采集_字段抽取解析【教程】
Android 常见的图片加载框架详细介绍
jQuery 常见小例汇总
微信推文制作网站有哪些,怎么做微信推文,急?
如何撰写建站申请书?关键要点有哪些?
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
如何在云虚拟主机上快速搭建个人网站?

