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可以看出是前两种之和,他先按名字再按类型
  • 相关阅读:
    (原创)如何利用UDP协议封装一个数据包
    <acarousel> 轮播图片无法触屏滑动
    Groovy开发语言
    关于ViewStub标签
    关键字transient和Volatile
    Android中Activity启动模式
    Android 开源项目分类汇总
    AtomicInteger的并发处理
    Cygwin: died waiting for dll loading (转载)
    Android知识点(C2DM)
  • 原文地址:https://www.cnblogs.com/ws563573095/p/10316662.html
Copyright © 2011-2022 走看看