20 lines
1.1 KiB
Markdown
20 lines
1.1 KiB
Markdown
Spring bean 生命周期
|
||
|
||
源码:AbstractAutowireCapableBeanFactory.doCreateBean
|
||
|
||
1. 实例化bean
|
||
2. 调用bean的set方法给属性赋值
|
||
3. 检查/执行BeanNameAware接口 setName (可选,实现BeanNameAware)
|
||
检查/执行BeanClassLoaderAware接口 setBeanClassLoader(可选,实现BeanClassLoaderAware)
|
||
检查/执行BeanFactoryAware接口 setBeanFactory(可选,实现BeanFactoryAware)
|
||
4. 执行bean后处理器的before (可选,自己实现BeanPostProcessor)
|
||
5. 检查/执行InitializingBean接口afterPropertiesSet (可选,实现InitializingBean)
|
||
6. 初始化bean (可选,调用自定义init方法)
|
||
7. 执行bean后处理器的after(可选,自己实现BeanPostProcessor)
|
||
8. 使用bean
|
||
9. 检查/执行DisposableBean接口destroy (可选,实现DisposableBean)
|
||
10. 销毁bean (可选,在容器关闭时调用自定义destroy方法)
|
||
|
||
spring只对scope为singleton的实例进行完整的生命周期管理,如果是prototype只负责到初始化完毕。一旦对象被客户端获取(getBean),spring不再负责该bean生命周期。
|
||
|