spring Bean的生命周期

生命周期

整个生命周期可以大致分为3个大的阶段,分别是: 创建、使用、销毁

还可以进一步分为5个小的阶段:实例化、初始化、注册Destruction回调、Bean的正常使用以及Bean的销毁

1.实例化Bean:
Spring容器首先创建Bean实例。
在AbstractAutowireCapableBeanFactory类中的createBeanInstance方法中实现

2.设置属性值:
Spring容器注入必要的属性到Bean中。
在AbstractAutowireCapableBeanFactory的populateBean方法中处理

3,检查Aware:
如果Bean实现了BeanNameAware、BeanClassLoaderAware等这些Aware接口,Spring容器会调用它门。
在AbstractAutowireCapableBeanFactory的initializeBean万法中调用

4.调用BeanPostProcessor的前置处理方法:
在Bean初始化之前,允许自定义的BeanPostProcessor对Bean实例进行处理,如修改Bean的状态BeanPostProcessor的postProcessBeforelnitialization方法会在此时被调用.由AbstractAutowireCapableBeanFactory的applyBeanPostProcessorsBeforelnitialization万执行。
5.调用InitializingBean的afterPropertiesSet方法

在所有Bean属性设置完成后进行初始化操作。如果Bean实现了InitializingBean接口afterPropertiesSet方法会被调用。
在AbstractAutowireCapableBeanFactory的invokelnitMethods方法中调用

6。调用自定义init-method方法:
提供一种配置方式,在XML配置中指定Bean的初始化方法。如果Bean在配置文件中定义了初始化方法那么该方法会被调用。
在AbstractAutowireCapableBeanFactory的invokelnitMethods方法中调用

7。调用BeanPostProcessor的后置处理方法
在Bean初始化之后,再次允许BeanPostProcessor对Bean进行处理。BeanPostProcessor的postProcessAfterlnitialization方法会在此时被调用。由AbstractAutowireCapableBeanFactory的applyBeanPostProcessorsAfterlnitialization万法执

8。注册Destruction回调:

如果Bean实现了DisposableBean接口或在Bean定义中指定了自定义的销毁方法,Spring容器会为这些Bean注册一个销毁回调,确保在容器关闭时能够正确地清理资源。在AbstractAutowireCapableBeanFactory类中的registerDisposableBeanlfNecessary方法中实现9.Bean准备就绪:
此时,Bean已完全初始化,可以开始处理应用程序的请求了

l0.调用DisposableBean的destroy方法
当容器关闭时,如果Bean实现了DisposableBean接口,destroy方法会被调用。在DisposableBeanAdapter的destroy方法中实现

11调用自定义的destory-method
如果Bean在配置文件中定义了销毁方法,那么该方法会被调用。在DisposableBeanAdapter的destroy方法中实现

你可能感兴趣的:(spring框架,spring,java,前端)