Spring Bean 的生命周期
- 根据配置情况调用Bean的构造函数或工厂方法,完成Bean的实例化
- 通过依赖注入完成Bean所有属性值的注入
- 如果Bean实现了BeanNameAware接口,则调用Bean的
setBeanName()
方法并传入当前Bean的id - 如果Bean实现了BeanFactoryAware接口,则调用Bean的
setBeanFactory()
方法并传入当前工厂类的引用 - 如果Bean实现了ApplicationContextAware接口,则调用Bean的
setApplicationContext()
方法并传入当前ApplicationContext的引用 - 如果BeanPostProcessor与Bean关联,则Spring将调用该接口的预初始化方法
postProcessBeforeInitialization()
方法对Bean进行加工操作,此处非常重要,Spring的AOP就是利用这个实现的 - 如果Bean实现了InitializingBean接口,则Spring将调用
afterPropertiesSet()
方法 - 如果在配置文件中通过
init-method
属性指定了初始化方法,则调用该初始化方法 - 如果BeanPostProcessor与Bean关联,则Spring将调用该接口的初始化方法
postProcessAfterInitialization()
方法,此时,Bean已经可以被系统使用了 - 如果在配置中指定了该Bean的作用范围为singleton,则将该Bean放入Spring IoC的缓存池中,将触发Spring对该Bean的生命周期管理;如果作用范围为prototype,则将该Bean交给调用者,由调用者管理该Bean的生命周期,Spring则不再管理该Bean
- 如果Bean实现了Disposable接口,则Spring会调用destroy()方法将Spring中的Bean销毁;如果在配置文件中通过属性destroy-method配置了Bean的销毁方法,则Spring将调用该方法对Bean进行销毁
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)