@Required @Autowired @Resource注解详解
一、@Required注解用于检查特定的属性是否设置
1.RequiredAnnotationBeanPostProcessor 为该注解的处理器,即bean后置处理器,检查所有带有该解的bean属性是否设置,如果未设置则抛出异常。
2.在spring配置文件中可以通过<context:annotation-config/>元素自动注册RequiredAnnotationBeanPostProcessor处理器。
3.RequiredAnnotationBeanPostProcessor处理器还能自定义注解用于检查属性,功能与@Required一致
如:
1.定义一个注解类型
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface CustomRequired { }
2.配置RequiredAnnotationBeanPostProcessor,注入自定义注解类型
<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor">
<property name="requiredAnnotationType">
<value>CustomRequired</value>
</property>
</bean>
然后就可以使用@CustomRequired 检查属性是否设置,功能与@Required一致。
二、@Autowired根据类型注入bean属性
1.AutowiredAnnotationBeanPostProcessor为该注解的处理器
2.在spring配置文件中可以通过<context:annotation-config/>元素自动注册AutowiredAnnotationBeanPostProcessor处理器
3.默认情况下@Autowired的属性是必须的,如果未设置会抛出异常。可以将@Autowired的required属性设置为false,当未找到匹配的bean,则不设置标注的属性
4.
当注解到数组或List集合中,spring将所有类型匹配的bean注入到该数据或List集合中
@Autowired
private Generator[] generators;
当注解到key为字符串的Map上,则将所有类型匹配的bean注入到map中,bean名称为key。
@Autowired
private Map<String,Generator> generators;
注意:如果在类中指定 @PostConstruct 后置处理器,那么在其中就可以使用@Autowired等依赖注入的对象。
他们在后置处理器执行前就已经依赖注入好了。
5.@Qualifier注解可以限定@Autowired注解到按类型以及名称注入bean。
@Autowired
@Qualifier("myGenerator")
private Generator generator; //则注入类型为Generator并且名称为myGenerator的bean
6.@Autowired注入非集合和数组属性时,如果发现多个匹配类型则报异常。因为按它按类型匹配,发现多个,无法确定注入哪个
三@Resource按名称注入属性,未找到则按类型注入。
1.CommonAnnotationBeanPostProcessor 为该注解的处理器 org.springframework.context.annotation.CommonAnnotationBeanPostProcessor
@Required @Autowired @Resource注解详解的更多相关文章
- SpringBoot事务注解详解
@Transactional spring 事务注解 1.简单开启事务管理 @EnableTransactionManagement // 启注解事务管理,等同于xml配置方式的 <tx:ann ...
- 26.SpringBoot事务注解详解
转自:https://www.cnblogs.com/kesimin/p/9546225.html @Transactional spring 事务注解 1.简单开启事务管理 @EnableTrans ...
- coding++:SpringBoot-事务注解详解
@Transactional spring 事务注解 1.简单开启事务管理 @EnableTransactionManagement // 启注解事务管理,等同于xml配置方式的 <tx:ann ...
- Spring IoC 公共注解详解
前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 什么是公共注解?公共注解就是常见的Java ...
- @RequestBody, @ResponseBody 注解详解(转)
原文地址: https://www.cnblogs.com/qq78292959/p/3760651.html @RequestBody, @ResponseBody 注解详解(转) 引言: 接上一篇 ...
- @ModelAttribute注解详解
@ModelAttribute注解详解 1.@ModelAttribute定义: 被该注解定义的方法,会在该方法所在的controller的任何目标方法执行之前执行 2.@ModelAttribute ...
- SpringMVC 常用注解 详解
SpringMVC 常用注解 详解 SpringMVC 常用注解 1.@RequestMapping 路径映射 2.@Requ ...
- 【转】@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
@RequestParam @RequestBody @PathVariable 等参数绑定注解详解 2014-06-02 11:24 23683人阅读 评论(2) 收藏 举报 目录(?)[+] 引言 ...
- @PathVariable @RequestParam @RequestBody等参数绑定注解详解
一.分类 handler method 参数绑定常用的注解,我们根据他们处理的Request的内容不同分为四类: 处理request uri 部分的注解: @PathVariable;(这里指ur ...
随机推荐
- 类型参数约束 : Controller where T : class,new()
这是类型参数约束,.NET支持的类型参数约束有以下五种: where T : struct | T必须是一个结构类型 where T : class | T必须是一个类(class)类型,不能是结构( ...
- DW(五):polybase集群安装
目录: Prerequisites 集群配置规划 polybase install firewall config 集群配置 删除计算节点 install Prerequisites Microsof ...
- 【linux】grub加密
1.计算grub的MD5加密密码: #grub-md5-crypt Password: Retype password:输入两遍密码进行确认以后,就会计算出你所输入密码的MD5加密值,如:$1$pFd ...
- 51nod1258 序列求和V4
T(n) = n^k,S(n) = T(1) + T(2) + ...... T(n).给出n和k,求S(n). 例如k = 2,n = 5,S(n) = 1^2 + 2^2 + 3^2 + 4^ ...
- 判断是否含有中文,包含返回true,不包含返回false
/** * 功能:判断是否含有中文,包含返回true,不包含返回false */ function isChina(s) { var patrn = /[\u4E00-\u9FA5]|[\uFE30- ...
- CSS常用样式整理
元素边框显示圆角:-moz-border-radius适用于火狐浏览器,-webkit-border-radius适用于Safari和Chrome两种浏览器. 浏览器渐变背景颜色: FILTER: p ...
- SVN学习之svn命令行下的基本操作
http://huihai.iteye.com/blog/1985751 上一节已经把svn安装完成,下来就用命令行做一些简单的操作. 1.当svn安装完成后,svn管理人员会在svn的root根目录 ...
- Hierarchy Viewer
http://blog.csdn.net/ddna/article/details/5527072 Hierarchy Viewer是随AndroidSDK发布的工具,位置在tools文件夹下,名为h ...
- Env:zsh和fish安装和使用
zsh优势兼容bash, 方便git管理,但是有时候切换速度较慢,特别遇到git仓库目录 fish优势速度较快,路径提示也不错,但是和bash不兼容 1. zsh 首先,可以通过cat /etc/sh ...
- linux截图工具scrot
SCROT截图工具 安装命令 sudo apt-get install scrot 截图命令使用说明: 1.抓取整个桌面: scrot ~/Pictures/pic1.jpg2.抓取窗口: ...