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