BeanPostProcessor贯穿bean的生命周期始终,BeanPostProcessor 接口类型实例是针对某种特定功能的埋点,在这个点会根据接口类型 来过滤掉不关注这个点的其他类,只有真正关注的类才会在这个点进行相应的功能实现。
1、获取有@Autowired 注解的构造函数埋点
过滤的接口类型是:SmartInstantiationAwareBeanPostProcessor
调用的方法是:determineCandidateConstructors
寻找当前正在实例化的bean中有@Autowired注解的构造函数,如果ctors不为空就说明构造函数上有@Autowired
2、收集@Resource@Autowired@Value@PostConstruct,@PreDestroy 注解的方法和属性
埋点
过滤的接口类型是:MergedBeanDefinitionPostProcessor
调用的方法是:postProcessMergedBeanDefinition
3、循环依赖解决中bean 的提前暴露埋点
过滤的接口类型是:SmartInstantiationAwareBeanPostProcessor
调用的方法是:getEarlyBeanReference
5、IOC/DI 依赖注入埋点
过滤的接口类型是:InstantiationAwareBeanPostProcessor
调用的方法是:postProcessProperties