详解 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集合
# 只有一个
# 两处
# 分割线
# 都有
# 是怎么
# 中有
# 的确如此
# 这也
# 希望能
# 不就
# 另外一个
# 就更
# 涉及到
# 谢谢大家
# 会将
# 开发人员
# 后却
# 在网上
# 其中有
# 是基于
相关文章:
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
如何快速生成ASP一键建站模板并优化安全性?
如何制作网站标识牌,动态网站如何制作(教程)?
如何在IIS服务器上快速部署高效网站?
家庭建站与云服务器建站,如何选择更优?
如何在西部数码注册域名并快速搭建网站?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
制作旅游网站html,怎样注册旅游网站?
如何制作一个表白网站视频,关于勇敢表白的小标题?
如何在香港服务器上快速搭建免备案网站?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
成都网站制作公司哪家好,四川省职工服务网是做什么用?
香港服务器WordPress建站指南:SEO优化与高效部署策略
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
C++如何使用std::optional?(处理可选值)
建站主机CVM配置优化、SEO策略与性能提升指南
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
建站之星如何通过成品分离优化网站效率?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
,制作一个手机app网站要多少钱?
如何在局域网内绑定自建网站域名?
如何在阿里云通过域名搭建网站?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
如何通过IIS搭建网站并配置访问权限?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
建站10G流量真的够用吗?如何应对访问高峰?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
建站之星微信建站一键生成小程序+多端营销系统
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
文字头像制作网站推荐软件,醒图能自动配文字吗?
韩国服务器如何优化跨境访问实现高效连接?
如何通过cPanel快速搭建网站?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
如何在Windows 2008云服务器安全搭建网站?
建站VPS能否同时实现高效与安全翻墙?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何选择高效稳定的ISP建站解决方案?
网站制作价目表怎么做,珍爱网婚介费用多少?
如何使用Golang table-driven基准测试_多组数据测量函数效率
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何规划企业建站流程的关键步骤?
学校为何禁止电信移动建设网站?
建站之星24小时客服电话如何获取?
C#怎么创建控制台应用 C# Console App项目创建方法
*请认真填写需求信息,我们会在24小时内与您取得联系。