spring bean的生命周期 详细
时间: 2023-10-11 11:11:07 浏览: 37
Spring Bean 的生命周期可以分为以下几个阶段:
1. 实例化:当 Spring 容器接收到创建 Bean 的请求时,容器会根据 Bean 的定义信息创建 Bean 实例。这个阶段是使用构造方法来创建 Bean 实例的。
2. 属性赋值:在实例化 Bean 之后,Spring 容器会使用 setter 方法或构造方法将 Bean 的属性赋值。
3. Aware 接口回调:在 Bean 的属性赋值完成之后,Spring 容器会调用实现了 Aware 接口的 Bean 的相应方法,例如 BeanNameAware、BeanFactoryAware、ApplicationContextAware 等。
4. BeanPostProcessor 前置处理器:Spring 容器会调用注册的 BeanPostProcessor 的 postProcessBeforeInitialization() 方法,对 Bean 进行修改或增强。
5. 初始化:初始化阶段是 BeanPostProcessor 后置处理器的 postProcessBeforeInitialization() 方法和 postProcessAfterInitialization() 方法之间的阶段。在这个阶段中,Spring 容器会检查是否实现了 InitializingBean 接口,如果实现了,就会调用 afterPropertiesSet() 方法。
6. 自定义初始化方法:如果没有实现 InitializingBean 接口,Spring 容器会查找是否配置了自定义的初始化方法,如果配置了,就会调用该方法。
7. BeanPostProcessor 后置处理器:Spring 容器会调用注册的 BeanPostProcessor 的 postProcessAfterInitialization() 方法,对 Bean 进行修改或增强。
8. 使用:Bean 初始化完成后,就可以使用了。
9. 销毁:当 Spring 容器关闭时,会调用实现了 DisposableBean 接口的 Bean 的 destroy() 方法。如果没有实现该接口,Spring 容器会查找是否配置了自定义的销毁方法,如果配置了,就会调用该方法。
总之,Spring Bean 的生命周期是:实例化 -> 属性赋值 -> Aware 接口回调 -> BeanPostProcessor 前置处理器 -> 初始化 -> 自定义初始化方法 -> BeanPostProcessor 后置处理器 -> 使用 -> 销毁。