zoukankan      html  css  js  c++  java
  • @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

  • 相关阅读:
    数据结构与算法之递归与调用栈
    Linux 压缩命令之tar和zip
    算法的时间复杂度—大O表示法
    Linux三大文本处理工具之awk
    Linux 排序命令之 sort, wc, uniq
    oracle性能优化之索引
    Linux三大文本处理工具之sed命令
    Linux三大文本处理工具之grep命令
    linux查看端口
    linux查看mac地址
  • 原文地址:https://www.cnblogs.com/beenupper/p/3383981.html
Copyright © 2011-2022 走看看