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-的生命周期了解么
网友评论