这个特性的其实还得归纳到@Autowired的特性上,或者说@Autowired包涵了一些我们不知道的能力。
@Autowired
private Map<String, BaseValidateCodeGenerator> baseValidateCodeGenerators;
在Spring中,写这种形式的代码,spring能自动装配值到map中,这种装配不是简单的给Map赋值,而是往Map里塞入元素,塞入规则需要看源码。我们平时可以适当利用这种特性来简化业务代码的编写。具体实现方式在DefaultListableBeanFactory#doResolveDependency()中。总结来说规则就是:
1、如果是数组,则获取数组元素类型,查找匹配该类型的所有bean,返回一个这些bean的数组;
2、如果该类可赋给Collection,并且是一个接口,则获取集合元素类型,查找匹配该类型的所有bean,返回一个这些bean的集合;
3、如果该类型是Map(注意是type == Map.class),且key是String类型,则获取Map的value的类型,查找匹配该类型的所有bean,这是一个key为bean name、value为bean实例的一个Map,返回这个Map。
4、其他情况则是我们所熟知的按类型自动装配过程。

Spring自动装配Map,List等集合相关推荐

  1. Spring按类型自动装配注入数组、集合、Map

    Spring按类型自动装配注入数组.集合.Map时,是把应用上下文中对应类型的bean装配进集合,而不是直接查找一个对应类型的集合然后注入.以下面这段代码为例: import org.springfr ...

  2. 一步一步手绘Spring DI运行时序图(Spring 自动装配之依赖注入)

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...

  3. 学习篇(一)- Spring自动装配的方式

    Spring自动装配的方式 1. 什么是自动装配? ​ 自动装配就是会通过Spring 的上下文为你找出相应依赖项的类,通俗的说就是Spring 会在上下文中自动查找,并自动给Bean装配与其相关的属 ...

  4. 第六篇 Spring 自动装配

    <Spring>篇章整体栏目 ----------------------------- [第一章]spring 概念与体系结构 [第二章]spring IoC 的工作原理 [第三章]sp ...

  5. Spring 自动装配 ‘byType’

    转载自   Spring 自动装配 'byType' Spring 自动装配 'byType' 这种模式由属性类型指定自动装配.Spring 容器看作 beans,在 XML 配置文件中 beans ...

  6. Spring 自动装配 ‘byName’

    转载自  Spring 自动装配 'byName' Spring 自动装配 'byName' 这种模式由属性名称指定自动装配.Spring 容器看作 beans,在 XML 配置文件中 beans 的 ...

  7. spring自动装配依赖包_解决Spring自动装配中的循环依赖

    spring自动装配依赖包 我认为这篇文章是在企业应用程序开发中使用Spring的最佳实践. 使用Spring编写企业Web应用程序时,服务层中的服务量可能会增加. 服务层中的每个服务可能会消耗其他服 ...

  8. Java的注解机制——Spring自动装配的实现原理

    JDK1.5加入了对注解机制的支持,实际上我学习Java的时候就已经使用JDK1.6了,而且除了@Override和@SuppressWarnings(后者还是IDE给生成的--)之外没接触过其他的. ...

  9. Spring自动装配----注解装配----Spring自带的@Autowired注解

    Spring自动装配----注解装配----Spring自带的@Autowired注解 父类 package cn.ychx;public interface Person {public void ...

最新文章

  1. D - Bear and Finding Criminals
  2. [总结]vue开发常见知识点及问题资料整理(持续更新)
  3. 前台传json ajax,如何在前台脚本通过json传递数据到后台(使用微软自带的ajax)
  4. win10输入法切换快捷键怎么设置
  5. mysql查询语句,int类型加引号居然也能查
  6. php 去除图片黑边,C#_c#扫描图片去黑边(扫描仪去黑边),自动去除图像扫描黑边复制代 - phpStudy...
  7. uva 12222——Mountain Road
  8. 及部署 项目案例_盘点丨2019十大边缘计算项目
  9. 前端悬浮窗效果_web前端入门到实战:css过渡和动画解析文
  10. kitti raw data development kit的使用
  11. 数组指针和指针数组的区别(转)
  12. 解决php截取文字乱码问题
  13. 华硕服务器 u盘安装系统,华硕台式机重装系统详细图解步骤
  14. 【英语语法】学习路线
  15. 一些常用意大利语 1000个单词
  16. 文件系统模拟程序python_树莓派开发实战(第2版)
  17. 【Linux系列文章】安装与配置(vmware)
  18. uva 1645 count 水题
  19. JS生成EXCEL(Chrome浏览器)
  20. 力扣 leetcode 1046. 最后一块石头的重量 (python)

热门文章

  1. 亚马逊海外购德国馆上线了,这次什么值得买?
  2. Word、PowerPoint无法加载mathtype加载项
  3. IOS视频直播:高仿腾讯旗下NOW直播映客直播类型
  4. Apollo学习(超详细)
  5. MES生产管理系统,你真的需要吗?
  6. 再见科比,再见逝去的青春
  7. PHP重定向的三种方法
  8. int 包装类型 Integer
  9. JQuary效果(自定义动画,王者荣耀效果案例)
  10. MySQL和Oracle中如何update一张表中的字段赋值给另一张表的字段