spring的后置处理器
spring供给了三种后置处理器
BeanFactoryPostProcessorBeanPostProcessor-
InitializingBean咱们来依次看每个后置处理器的履行流程。
BeanFactoryPostProcessor
首要仍是回到refresh办法中,咱们能够看到在创立一般bean方针的上面有个办法叫invokeBeanFactoryPostProcessor,从办法名就能够看出是履行BeanFactoryPostProcessor办法


PriorityOrdered接口的方针排序后履行


PriorityOrdered接口后再拿出完结了Order接口的方针履行


BeanDefinitionRegistryPostProcessor的办法postProcessBeanDefinitionRegistry,三个判别完毕之后最终履行BeanFactoryPostProcessor的postProcessBeanFactory办法
流程图如下

工厂后置增强的实际用途
咱们现在知道了spring供给了一些工厂的后置处理器来增强工厂,那么咱们现在来看看spring中实际使用工厂后置处理器做了什么事情,咱们来看一个类ConfigurationClassPostProcessor

@Configuratioin注解的类


@Conditional注解的方针会判别条件是否收效


BeanPostProcessor 注册
工厂的增强至此就完毕了,接下来看看一般组件的后置处理器的逻辑,仍是回到refresh办法,这次是调用registerBeanPostProcessors办法,注册后置处理器。




InstantiationAwareBeanPostProcessor
一切的BeanPostProcessor都被注册之后,咱们来看其间一个分支:InstantiationAwareBeanPostProcessor 的流程
SmartInstantiationAwareBeanPostProcessor

智能的实例后置处理器,那么这个咱们就来看看智能在什么地方. 在refresh办法中调用了一个注册监听器的办法

依据类型获取称号列表的办法,该办法是ListableBeanFactory接口的一个办法





InstantiationAwareBeanPostProcessor

postProcessBeforeInstantiation办法测验回来方针,假如用户回来了则会用用户创立的方针。



MergedBeanDefinitionPostProcessor
在创立好bean实例方针之后会调用一下MergedBeanDefinitionPostProcessor的postProcessMergedBeanDefinition办法让用户界说一下BeanDefinition

PopulateBean
之后就进入特点赋值办法,首要会先履行 InstantiationAwareBeanPostProcessor的 postProcessAfterInstantiation办法,回来bool类型的值,假如回来true则会持续特点赋值,回来false则不会特点赋值

InstantiationAwareBeanPostProcessor 的 postProcessProperties办法。主动注入 AutowiredAnnotationBeanPostProcessor的该办法就完结了主动注入的特点赋值

PropertyValues
在上面咱们能够看到postProcessProperties办法回来了一个pvs,咱们也能够自界说回来pvs,spring最终会帮咱们注入到方针中,创立一个PVS回来即可

BeanPostProcessor
特点赋值之后spring会履行initializeBean 办法初始化bean,首要会先履行一些 Aware的注入




