Spring自动装配Map,List等集合
这个特性的其实还得归纳到@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等集合相关推荐
- Spring按类型自动装配注入数组、集合、Map
Spring按类型自动装配注入数组.集合.Map时,是把应用上下文中对应类型的bean装配进集合,而不是直接查找一个对应类型的集合然后注入.以下面这段代码为例: import org.springfr ...
- 一步一步手绘Spring DI运行时序图(Spring 自动装配之依赖注入)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- 学习篇(一)- Spring自动装配的方式
Spring自动装配的方式 1. 什么是自动装配? 自动装配就是会通过Spring 的上下文为你找出相应依赖项的类,通俗的说就是Spring 会在上下文中自动查找,并自动给Bean装配与其相关的属 ...
- 第六篇 Spring 自动装配
<Spring>篇章整体栏目 ----------------------------- [第一章]spring 概念与体系结构 [第二章]spring IoC 的工作原理 [第三章]sp ...
- Spring 自动装配 ‘byType’
转载自 Spring 自动装配 'byType' Spring 自动装配 'byType' 这种模式由属性类型指定自动装配.Spring 容器看作 beans,在 XML 配置文件中 beans ...
- Spring 自动装配 ‘byName’
转载自 Spring 自动装配 'byName' Spring 自动装配 'byName' 这种模式由属性名称指定自动装配.Spring 容器看作 beans,在 XML 配置文件中 beans 的 ...
- spring自动装配依赖包_解决Spring自动装配中的循环依赖
spring自动装配依赖包 我认为这篇文章是在企业应用程序开发中使用Spring的最佳实践. 使用Spring编写企业Web应用程序时,服务层中的服务量可能会增加. 服务层中的每个服务可能会消耗其他服 ...
- Java的注解机制——Spring自动装配的实现原理
JDK1.5加入了对注解机制的支持,实际上我学习Java的时候就已经使用JDK1.6了,而且除了@Override和@SuppressWarnings(后者还是IDE给生成的--)之外没接触过其他的. ...
- Spring自动装配----注解装配----Spring自带的@Autowired注解
Spring自动装配----注解装配----Spring自带的@Autowired注解 父类 package cn.ychx;public interface Person {public void ...
最新文章
- D - Bear and Finding Criminals
- [总结]vue开发常见知识点及问题资料整理(持续更新)
- 前台传json ajax,如何在前台脚本通过json传递数据到后台(使用微软自带的ajax)
- win10输入法切换快捷键怎么设置
- mysql查询语句,int类型加引号居然也能查
- php 去除图片黑边,C#_c#扫描图片去黑边(扫描仪去黑边),自动去除图像扫描黑边复制代 - phpStudy...
- uva 12222——Mountain Road
- 及部署 项目案例_盘点丨2019十大边缘计算项目
- 前端悬浮窗效果_web前端入门到实战:css过渡和动画解析文
- kitti raw data development kit的使用
- 数组指针和指针数组的区别(转)
- 解决php截取文字乱码问题
- 华硕服务器 u盘安装系统,华硕台式机重装系统详细图解步骤
- 【英语语法】学习路线
- 一些常用意大利语 1000个单词
- 文件系统模拟程序python_树莓派开发实战(第2版)
- 【Linux系列文章】安装与配置(vmware)
- uva 1645 count 水题
- JS生成EXCEL(Chrome浏览器)
- 力扣 leetcode 1046. 最后一块石头的重量 (python)