问题抛出:
我们开发过程中、我们经常会通过@PostConstruct注解初始化一些缓存数据、但是你知道Spring什么会调用被@PostConstruct修饰方法嘛?
在所有的依赖注入完成之后、会执行被@PostConstruct修饰的方法。一般用于业务数据的初始化工作
继承结构:
如上图 CommonAnnotationBeanPostProcessor这个类就是处理@PostConstruct、@PreDestroy、@Resource、这些jdk注解。
总结:
因为上一篇介绍过 @Autowired源码AutowiredAnnotationBeanPostProcessor的处理@Autowired注解、逻辑思路基本一致 、看懂@Autowired的处理逻辑 这个一定知道Spring怎么处理的,这里不在赘述。
但是要注意:
处理 @Resouce 和 @PostConstruct @PreDestory 获取缓存元数据是一个地方 即:
即:applyMergedBeanDefinitionBeanPostProcessors
但是:
①注解@Resource修饰属性的赋值操作 是给属性赋值阶段执行父类的postProcessProperties
②注解@PostConstruct 是在初始化Bean阶段, BPP的postProcessBeforeInitialization方法完成调用修饰的方法