作用
bean的后置处理器。在bean初始化过程中,在各个阶段允许对bean进行定制计划处理。
子接口
本文章主要说明BeanPostProcessor几个重要的子接口,以及他们在何时调用,同时简单说明他们他们的作用。
BeanPostProcessor
顶级接口,在bean完成init前后分别调用其:postProcessBeforeInitialization 和 postProcessAfterInitialization
MergedBeanDefinitionPostProcessor
当创建的对象是MergedBeanDefinition是,会在new出对象后执行postProcessMergedBeanDefinition
InstantiationAwareBeanPostProcessor
在new出对象前执行InstantiationAwareBeanPostProcessor ,允许对象直接返回代理
在new出对象后执行postProcessAfterInstantiation, 判断是否需要注入属性
同时通过postProcessProperties 注入属性。我们平常使用的@Autowired和@Value就是在这一步注入的
SmartInstantiationAwareBeanPostProcessor
当new对象时,通过determineCandidateConstructors方法确定构造函数。我们可以通过@Autowired注解来确定。
当对象还没有被初始化完成时,但被其他bean依赖需要提取获取时,可以通过getEarlyBeanReference提前获取代理。这一步在aop中可以体现ßß