Spring Bean的生命周期四个阶段
- 实例化 Instantiation
- 属性赋值 Populate
- 初始化 Initialization
- 销毁 Destruction
影响多个Bean的接口有二个,InstantiationAwareBeanPostProcessor作用于实例化阶段的前后,BeanPostProcessor作用于初始化阶段的前后。
只调用一次的接口,有Aware类型的接口和生命周期接口二种。 aware类型的接口可以分为二组: Aware Group1
- BeanNameAware
- BeanClassLoaderAware
- BeanFactoryAware
Aware Group2
- EnvironmentAware
- EmbeddedValueResolverAware能够获取Spring EL解析器,用户的自定义注解需要支持spel表达式的时候可以使用。
- ApplicationContextAware(ResourceLoaderAware\ApplicationEventPublisherAware\MessageSourceAware)
ApplicationContext是一个复合接口,返回值都是当前的ApplicationContext对象。
生命周期的接口
- InitializingBean:对应生命周期的初始化阶段,Spring将调用他们的afterPropertiesSet()方法。如果bean使用init-method声明了初始化方法,该方法也会被调用。
- DisposableBean:对应生命周期的销毁阶段,Spring将调用它的destory()接口方法,同样,如果bean使用了destory-method 声明销毁方法,该方法也会被调用。
大致流程
|