spring--Bean的生命周期
Spring bean 的生命周期涉及多个阶段,从创建到销毁。下面是一个简化的生命周期描述:
-
Bean 定义:
- 首先,Spring 根据配置(XML、注解或 Java 配置)创建一个 bean 的定义。
-
Bean 实例化:
- Spring 容器使用构造器或工厂方法实例化 bean。
-
属性填充:
- Spring 容器通过反射机制,将所有的属性值注入到 bean 中。
-
BeanNameAware 和 BeanFactoryAware:
- 如果 bean 实现了
BeanNameAware
接口,Spring 将 bean 的 ID 传递给setBeanName()
方法。 - 如果 bean 实现了
BeanFactoryAware
接口,Spring 将调用setBeanFactory()
方法,将BeanFactory
容器实例传入。
- 如果 bean 实现了
-
BeanPostProcessor 前置处理:
- Spring 容器调用
BeanPostProcessor
接口的postProcessBeforeInitialization()
方法,可以在此对 bean 进行一些处理。
- Spring 容器调用
-
InitializingBean 和自定义 init 方法:
- 如果 bean 实现了
InitializingBean
接口,Spring 将调用其afterPropertiesSet()
方法。 - 如果 bean 在配置中定义了 init 方法,该方法也会被调用。
- 如果 bean 实现了
-
BeanPostProcessor 后置处理:
- Spring 容器调用
BeanPostProcessor
接口的postProcessAfterInitialization()
方法,可以在此对 bean 进行一些处理。
- Spring 容器调用
-
Bean 准备就绪:
- 此时,bean 已经准备好可以被应用程序使用了。
-
DisposableBean 和自定义 destroy 方法:
- 当容器关闭时,如果 bean 实现了
DisposableBean
接口,Spring 将调用其destroy()
方法。 - 如果 bean 在配置中定义了 destroy 方法,该方法也会被调用。
- 当容器关闭时,如果 bean 实现了
-
Bean 销毁:
- 最后,bean 被销毁,不再可用。
在实际应用中,Spring bean 的生命周期可能会更加复杂,因为还可以通过监听器(如 ContextRefreshedEvent
、ContextClosedEvent
等)来执行特定的逻辑。
理解 Spring bean 的生命周期对于管理资源、处理初始化和清理工作以及优化应用性能等方面都是很重要的。开发者可以通过实现特定的接口或使用注解(如 @PostConstruct
和 @PreDestroy
)来介入生命周期的不同阶段,执行自定义的逻辑。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏