本文帮你回答以下几个问题:
- @PostConstruct和@PreDestroy注解标注的方法是在什么阶段调用的?
- @Resource是如何完成属性自动注入的?
- @Resource相比@Autowired查找候选者的过程差异是什么?
类定义
类的作用
- 对@PostConstruct和@PreDestroy注解的处理,完成bean初始化前和销毁前的回调
- 对@Resource注解的处理,完成依赖字段的注入
类的结构
继承父类
InstantiationAwareBeanPostProcessor
提供了bean实例化前后对bean的操作以及在属性赋值前,传递属性值的postProcessProperties方法。
InitDestroyAnnotationBeanPostProcessor
继承了DestructionAwareBeanPostProcessor和MergedBeanDefinitionPostProcessor接口。
主要实现的方法有:postProcessMergedBeanDefinition、postProcessBeforeInitialization、postProcessBeforeDestruction、requiresDestruction。
MergedBeanDefinitionPostProcessor
用于处理合并后的BeanDefinition,在bean实例化后、属性赋值前回调。
DestructionAwareBeanPostProcessor
用于bean销毁前的回调。