spring · 26 5 月, 2021 0

Spring 依赖处理过程

依赖处理过程

Spring在处理bean创建时,会自动的初始化依赖的bean, 这时将会涉及到依赖的初始化过程,依赖初始化过程很复杂,这里主要表明了依赖的处理流程。

  • 基础知识

    • 入口 – DefaultListableBeanFactory#resolveDependency

    • 依赖描述符 – DepencencyDescriptor

    • 自动绑定候选对象处理器 – AutowireCandidateResolver

@Autowired 注入

  • @Autowired注入过程

    • 元信息解析

    • 依赖查找

    • 依赖注入(字段, 方法)

@Inject 注入

  • @Inject注入过程

    • 如果JSR-330存在于ClassPath中,复用AutowiredAnnotationBeanPostProcessor实现

Java通用注解注入原理

  • CommonAnnotationBeanPostProcessor

    • 注入注解

      • java.xml.ws.WebServiceRef

      • javax.ejb.EJB

      • javax.annotation.Resource

    • 声明周期注解

      • javax.annotation.PostConstruct

      • java.annotation.PreDestroy

自定义依赖注入注解

  • 基于AutowiredAnnotationBeanPostProcessor实现

  • 自定义实现

    • 声明周期处理

      • InstantiationAwareBeanPostProcessor

      • MergedBeanDefinitionPostProcessor

    • 元数据

      • InjectedElement

      • InjectionMetadata