Bean的生命周期主要包括三个阶段:
- 容器初始化
- 实例化bean
- bean的销毁
容器初始化阶段
该阶段主要看是否是实现BeanFactoryPostProcessor接口,该接口是IOC容器的后置处理器,通过该接口中的postProcessBeanFactory方法可以修改Bean中的元数据信息,在实例化对象之前执行
Bean初始化阶段
通过实现InstantiationAwareBeanPostProcessor接口将bean分成构造器实例化阶段,设值注入阶段,bean初始化阶段,该接口继承了BeanPostProcess接口,因此它一共有5个方法
以下前3个方法是InstantiationAwareBeanPostProcessor中自定义的方法,后面两个是继承自BeanPostProcess接口中的方法
- postProcessBeforeInstantiation(在实例化之前执行 Bean对象还没)
- postProcessAfterInstantiation(在方法实例化之后执行 Bean对象已经创建出来了)
- postProcessPropertyValues(可以用来修改Bean中属性的内容)
- postProcessBeforeInitialization(在Bean的自定义初始化方法之前执行,Bean对象已经存在了)
- postProcessAfterInitialization(在Bean的自定义初始化方法执行完成之后执行,Bean对象已经存在了)
销毁阶段
- 如果实现了DisposableBean接口会执行destroy方法
- 如果指定了destroy-method属性则会执行指定的方法
- 如果指定了@PreDestroy注解则会执行标注的方法