• Home
  • Articles
    • 日志
    • 妍小言
    • 舒小书
    • 浩然说
    • 生活日记
  • All Tags

dubbo reference autoconfig

27 Dec 2017

Reading time ~1 minute

需求

对添加了@Reference注解的属性和方法依赖注入通过动态代理生成的接口实例。

Reference注入

  1. 通过ImportBeanDefinitionRegistrar注册一个InstantiationAwareBeanPostProcessorAdapter的子类。
  2. 重写InstantiationAwareBeanPostProcessorAdapter#postProcessPropertyValues方法,spring会在初始化了java bean之后回调这个方法,在这个方法里我们可以来实现依赖注入。
  3. 构造一个InjectionMetadata,传入bean class以及InjectedElement列表。
  4. 自定义ReferenceInjectedElement,继承InjectedElement,重写InjectedElement#getResourceToInject方法,通过@Reference构造一个ReferenceBean,通过其getObject方法获取动态代理生成的实例。
  5. 解析java bean的属性和方法,将添加了@Reference注解的元素构造成一个ReferenceInjectedElement。
  6. 调用InjectionMetadata#inject方法实现依赖注入。

代码地址



dubboautoconfig