全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解 Spring注解的(List&Map)特殊注入功能

详解 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小时内与您取得联系。