Spring Bean 容器的生命周期主要包括以下阶段:
- 实例化(Instantiation):在这个阶段,Spring 容器会根据配置信息或注解来创建 Bean 的实例。可以通过构造函数实例化,也可以通过工厂方法实例化。
- 属性赋值(Population):在实例化后,Spring 容器会将配置的属性值或注解中的属性值注入到 Bean 实例中。这个过程可以通过 setter 方法注入,也可以通过字段注入。这个阶段也被称为依赖注入(Dependency Injection)。
- 初始化(Initialization):在属性赋值完成后,Spring 容器会调用 Bean 的初始化方法。在这个阶段,可以进行一些初始化操作,如数据加载、资源准备等。
- 使用(In Use):在初始化完成后,Bean 就可以被应用程序使用了。在这个阶段,Bean 会被注入到其他 Bean 中,或者通过 Spring 容器获取并调用其方法。
- 销毁(Destruction):当应用程序不再需要 Bean 时,Spring 容器会负责销毁 Bean。这通常发生在 Spring 容器关闭时,或者 Bean 的作用域结束时(如对于 prototype 作用域的 Bean)。
Spring Bean 容器的生命周期还涉及多种接口方法,这些方法可以划分为以下几类:
- Bean 自身的方法:这包括 Bean 本身调用的方法和通过配置文件中
<bean>
的init-method
和destroy-method
指定的方法。 - Bean 级生命周期接口方法:这包括
BeanNameAware
、BeanFactoryAware
、InitializingBean
和DisposableBean
这些接口的方法。 - 容器级生命周期接口方法:这包括
InstantiationAwareBeanPostProcessor
和BeanPostProcessor
这两个接口实现,一般称它们的实现类为“后处理器”。
这些接口和方法提供了对 Bean 生命周期的更多控制,允许在 Bean 的创建、初始化、使用和销毁过程中执行自定义逻辑。
总的来说,Spring Bean 容器的生命周期是一个从实例化到销毁的过程,涉及多个阶段和接口方法,使得开发者能够灵活控制和管理 Bean 的生命周期行为。