一、@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注解详解的更多相关文章

  1. SpringBoot事务注解详解

    @Transactional spring 事务注解 1.简单开启事务管理 @EnableTransactionManagement // 启注解事务管理,等同于xml配置方式的 <tx:ann ...

  2. 26.SpringBoot事务注解详解

    转自:https://www.cnblogs.com/kesimin/p/9546225.html @Transactional spring 事务注解 1.简单开启事务管理 @EnableTrans ...

  3. coding++:SpringBoot-事务注解详解

    @Transactional spring 事务注解 1.简单开启事务管理 @EnableTransactionManagement // 启注解事务管理,等同于xml配置方式的 <tx:ann ...

  4. Spring IoC 公共注解详解

    前言 本系列全部基于 Spring 5.2.2.BUILD-SNAPSHOT 版本.因为 Spring 整个体系太过于庞大,所以只会进行关键部分的源码解析. 什么是公共注解?公共注解就是常见的Java ...

  5. @RequestBody, @ResponseBody 注解详解(转)

    原文地址: https://www.cnblogs.com/qq78292959/p/3760651.html @RequestBody, @ResponseBody 注解详解(转) 引言: 接上一篇 ...

  6. @ModelAttribute注解详解

    @ModelAttribute注解详解 1.@ModelAttribute定义: 被该注解定义的方法,会在该方法所在的controller的任何目标方法执行之前执行 2.@ModelAttribute ...

  7. SpringMVC 常用注解 详解

    SpringMVC 常用注解 详解 SpringMVC 常用注解 1.@RequestMapping                                      路径映射 2.@Requ ...

  8. 【转】@RequestParam @RequestBody @PathVariable 等参数绑定注解详解

    @RequestParam @RequestBody @PathVariable 等参数绑定注解详解 2014-06-02 11:24 23683人阅读 评论(2) 收藏 举报 目录(?)[+] 引言 ...

  9. @PathVariable @RequestParam @RequestBody等参数绑定注解详解

    一.分类 handler method 参数绑定常用的注解,我们根据他们处理的Request的内容不同分为四类: 处理request uri 部分的注解:   @PathVariable;(这里指ur ...

随机推荐

  1. replace() replace_copy()

    int a[] = {1,2,3,3,4}; vector<int> v(a, a+5); vector<int> v2; //replace(v.begin(), v.end ...

  2. Jfinal中log4j的配置

    基本不用配置: 1.web.xml不用配置: 2.添加文件log4j.properties到src下面: 3.lib中复制log4j的jar包进去: 4.可以使用了; package demo; im ...

  3. 清理SQL Server日志释放文件空间的终极方法

    清理SQL Server日志释放文件空间的终极方法  转自:http://www.cnblogs.com/dudu/archive/2013/04/10/3011416.html [问题场景]有一个数 ...

  4. Maven 依赖管理

    1  概念介绍 之前我们说过,maven 坐标能够确定一个项目.换句话说,我们可以用它来解决依赖关系.在 POM 中,依赖关系是在 dependencies部分中定义的.在上面的 POM 例子中,我们 ...

  5. php require和include区别

    require的使用方法如:require("myfile.php"),这个语句通常放在PHP脚本程序的最前面.PHP程序在执行前,就会先读入require()语句所引入的文件,使 ...

  6. thinkphp 常用

     {$Think.session.adminuser}  获取session信息,模版和js中都可以调用 模版调用 <empty name="Think.session.userid& ...

  7. Func系列2:常用模块及API

    简介 Func提供了非常丰富的功能模块,包括CommandModule(执行命令).CopyFileModule(拷贝文件).CPUModule(CPU信息).DiskModule(磁盘信息).Fil ...

  8. Linux命令之at

    1.命令格式:at[参数][时间]2.命令功能:在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd进程(ps -ef | grep atd查看, 开启用/etc/init.d/atd s ...

  9. android学习笔记42——图形图像处理2——绘图

    绘图 android的绘图应该继承View组件,并重写onDraw(Canvas canvas)方法即可. 重写onDraw(Canvas canvas)方法时涉及一个绘图API:Canvas,Can ...

  10. android如何播放资源文件夹raw中的视频

    转自这里 videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/&qu ...