Bean 的生命周期

Bean 的生命周期

在 Spring 框架中,Bean 是指被 Spring 容器管理的对象。Bean 的生命周期指 Bean 被创建的过程,以及在容器关闭时 Bean 被销毁的过程。

Bean 的生命周期包括以下阶段:

1. 实例化

当 Spring 容器接收到一个 Bean 的定义时,它会根据 Bean 的定义创建一个实例。这个实例化可以通过构造函数或者工厂方法来完成。

2. 属性赋值

当 Bean 实例被创建后,Spring 容器会根据配置文件或注解,为 Bean 的属性进行赋值。这些属性可以是基本数据类型、对象引用或集合等类型。

3. 初始化

初始化是指 Bean 实例创建后完成所有准备工作,使得 Bean 可以被使用的过程。这个过程可以通过实现 InitializingBean 接口或者在配置文件中定义 init-method 方法来完成。

4. 使用

在初始化完成后,Bean 可以被使用了。Bean 就是在这个阶段被注入到其他 Bean 中,或者被容器提供给其他组件使用的。

5. 销毁

当容器关闭时,Bean 被销毁。这个过程可以通过实现 DisposableBean 接口或者在配置文件中定义 destroy-method 方法来完成。

总结

Bean 的生命周期可以通过配置文件或注解来控制,开发人员可以根据需要自由设置 Bean 的创建、初始化、使用和销毁等阶段的处理方式,以满足业务需要。

  • Bean 容器找到配置文件中 Spring Bean 的定义。
  • Bean 容器利用 Java Reflection API 创建一个 Bean 的实例。
  • 如果涉及到一些属性值 利用 set()方法设置一些属性值。
  • 如果 Bean 实现了 BeanNameAware 接口,调用 setBeanName()方法,传入 Bean 的名字。
  • 如果 Bean 实现了 BeanClassLoaderAware 接口,调用 setBeanClassLoader()方法,传入 ClassLoader对象的实例。
  • 如果 Bean 实现了 BeanFactoryAware 接口,调用 setBeanFactory()方法,传入 BeanFactory对象的实例。
  • 与上面的类似,如果实现了其他 .Aware接口,就调用相应的方法。
  • 如果有和加载这个 Bean 的 Spring 容器相关的 BeanPostProcessor 对象,执行postProcessBeforeInitialization() 方法
  • 如果 Bean 实现了InitializingBean接口,执行afterPropertiesSet()方法。
  • 如果 Bean 在配置文件中的定义包含 init-method 属性,执行指定的方法。
  • 如果有和加载这个 Bean 的 Spring 容器相关的 BeanPostProcessor 对象,执行postProcessAfterInitialization() 方法
  • 当要销毁 Bean 的时候,如果 Bean 实现了 DisposableBean 接口,执行 destroy() 方法。
  • 当要销毁 Bean 的时候,如果 Bean 在配置文件中的定义包含 destroy-method 属性,执行指定的方法。

著作权归Guide所有 原文链接:https://javaguide.cn/system-design/framework/spring/spring-knowledge-and-questions-summary.html#bean-的生命周期了解么

image.png

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容