本文将对Spring框架中Bean的生命周期进行简明扼要的分析与讨论,包括其初始化、依赖注入及销毁等关键阶段。
Spring bean 生命周期验证是 Spring 框架中的一个核心概念,它涵盖了从创建到销毁的整个过程。掌握这一知识能够帮助开发者更好地理解框架,并提升应用程序的质量。
一、通过源码注释了解生命周期
在 JDK 的 BeanFactory 实现类中可以看到对完整初始化流程及其标准顺序的支持:
1. 设置 bean 名称(BeanNameAware)
2. 设置 bean 类加载器(BeanClassLoaderAware)
3. 设置 bean 工厂(BeanFactoryAware)
4. 设置环境信息,包括配置文件和属性值(EnvironmentAware)
5. 配置嵌入式值解析器(EmbeddedValueResolverAware)
6. 加载资源并设置资源加载器,在应用程序上下文中运行时使用
7. 注入应用事件发布者 ApplicationEventPublisher (ApplicationEventPublisherAware)
8. 设置国际化支持(MessageSourceAware)
9. 设置应用上下文(ApplicationContextAware)
10. 设置 servlet 上下文(ServletContextAware)
11. 执行 bean 处理器的前置方法(BeanPostProcessors)
12. 完成属性设置后执行初始化 Bean 的回调 (InitializingBean afterPropertiesSet 方法)
13. 调用自定义初始化方法
14. 执行 bean 处理器的后置方法
销毁顺序如下:
1. 销毁处理器前置方法(DestructionAwareBeanPostProcessors)
2. 通过 DisposableBean 接口执行 Bean 的销毁回调
3. 用户自定义的销毁逻辑
二、测试验证
为了检验 Spring bean 生命周期,我们可以选择其中8个步骤进行测试。初始化流程包括:
1. 设置 bean 名称 (BeanNameAware)
3. 设置 bean 工厂 (BeanFactoryAware)
11. 执行前置方法(BeanPostProcessors)
12. 完成属性设置后的回调(InitializingBean afterPropertiesSet 方法)
13. 调用自定义初始化方法
14. 后置处理流程的执行(BeanPostProcessors)
销毁过程包括:
2. 通过 DisposableBean 接口调用 Bean 的销毁逻辑
3. 用户定制的销毁逻辑
在测试时,可以创建一个 Person 类实现 BeanFactoryAware, BeanNameAware, InitializingBean 和 DisposableBean 接口。这样就可以验证 Spring bean 生命周期中的每个步骤。
理解并掌握 Spring bean 生命周期对于提高应用程序的质量和维护性至关重要。