• 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可以看出是前两种之和,他先按名字再按类型
  • 相关阅读:
    2月4日进度
    每日总结3-6
    每日总结3-5
    每日总结3-4
    每日总结3-2
    本周计划
    本周计划
    假期每日总结2-13
    假期每日总结2-12
    假期每日总结2-11
  • 原文地址:https://www.cnblogs.com/ws563573095/p/10316662.html
Copyright © 2020-2023  润新知