在 Spring 中,一个 bean 的生命周期包括以下阶段:
实例化(Instantiation): 当容器启动时,根据配置文件或注解,Spring IoC 容器会实例化配置的 bean。这通常是通过调用构造函数来完成的。
依赖注入(Dependency Injection): 在实例化后,Spring IoC 容器会检查 bean 的依赖关系,并将它们注入到 bean 实例中。这意味着容器会将所需的依赖项(如其他 bean 或基本数据类型)传递给 bean。
初始化(Initialization): 一旦 bean 的所有依赖项都已注入,容器会调用初始化回调方法来准备 bean 使用。在这个阶段,可以执行一些自定义的初始化逻辑,比如数据加载或资源分配。初始化可以通过两种方式来完成:
使用 init-method 属性: 在 XML 配置文件中,可以使用 <bean> 元素的 init-method 属性来指定初始化方法的名称。
实现 InitializingBean 接口: bean 类可以实现 Spring 提供的 InitializingBean 接口,并覆盖其中的 afterPropertiesSet() 方法。
使用(In Use): 初始化完成后,bean 就可以被容器和其他 bean 使用了。它会持续保持在容器中,直到容器关闭或销毁。
销毁(Destruction): 当容器关闭时,或者当 bean 的作用域范围结束时,容器会调用 bean 的销毁回调方法,执行一些清理工作或释放资源。销毁可以通过两种方式来完成:
使用 destroy-method 属性: 在 XML 配置文件中,可以使用 <bean> 元素的 destroy-method 属性来指定销毁方法的名称。
实现 DisposableBean 接口: bean 类可以实现 Spring 提供的 DisposableBean 接口,并覆盖其中的 destroy() 方法。