zoukankan      html  css  js  c++  java
  • 002649:方法中Autowired的多种注入方式

    一、背景

      

       1、今天查看代码时看到有个这样的写法,具体功能就是把RouteContextHandler的实现类注入到这个入参中。    
       2、说实在的真是第一次见。
       3、一直以为@Autowired只能放到字段和普通方法上。

    二、具体分析

      

      1、查看了下@Autowired的定义他除了上述两种,还可以用在构造构造器,方法参数和其他注解上   
      2、顺便看了下@Qualifier,它和@Autowired的作用域差不多,也可以用在参数上。   
      3、@Resource就不能了,只能用在类、方法和属性上。
      4、Controller,Service,Component的使用范围就比较单一了。

    三、实现

      

      1、@Autowired注解是由AutowiredAnnotationBeanPostProcessor类中的processInjection来处理的。   
      2、先收集类中@Autowired和@Value修饰的属性和方法参数封装在Metadata中(org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.buildAutowiringMetadata(Class<?>))
      3、然后根据名称和类型充spring容器中获取值。
      4、设置会对象中

    四、其他

      1、@Autowired,@Qualifier,@Resource的区别

        a、Autowired根据类型注入对象。     
        b、Qualifier根据名字注入对象。     
        c、Resource可以看出是前两种之和,他先按名字再按类型
  • 相关阅读:
    Ubuntu14.04安装CMake3.5.1(转)
    树莓派进阶之路 (005)
    树莓派进阶之路 (004)
    树莓派进阶之路 (006)
    树莓派进阶之路 (007)
    树莓派 添加国内源
    树莓派进阶之路 (001)
    安装samba脚本
    Linux中tty、pty、pts的概念区别
    单片机串口通信原理及原理图
  • 原文地址:https://www.cnblogs.com/ws563573095/p/10316662.html
Copyright © 2011-2022 走看看