【122、spring中bean的生命周期】

39 阅读1分钟

在 Spring 容器中,一个 Bean 的生命周期可以分为以下阶段:

  1. 实例化 Bean:当 Spring 容器接收到 Bean 定义时,会根据 Bean 定义创建 Bean 实例。通常情况下,Spring 使用反射机制调用类的构造函数来实例化 Bean。
  2. 设置对象属性:在创建 Bean 实例后,Spring 会调用 set 方法将 Bean 的属性设置为配置文件中配置的值或者通过依赖注入设置的值。
  3. Bean 的后置处理器 BeforeInitialization:Spring 容器会检测是否配置了 BeanPostProcessor 接口的实现类,如果有,则在调用 Bean 的初始化方法之前,会执行这些 BeanPostProcessor 实现类中的 postProcessBeforeInitialization 方法。
  4. 初始化 Bean:当 Bean 的实例创建和属性设置完成之后,Spring 容器会调用初始化方法,例如:init-method。在这个阶段,Bean 可以执行自己的初始化逻辑。
  5. Bean 的后置处理器 AfterInitialization:在调用 Bean 的初始化方法之后,Spring 容器会执行 BeanPostProcessor 实现类中的 postProcessAfterInitialization 方法。
  6. 使用 Bean:在初始化完成之后,Bean 就可以被应用程序使用了,它们会一直留在 Spring 容器中,直到容器销毁。
  7. 销毁 Bean:当 Spring 容器关闭时,会调用 Bean 的销毁方法,例如:destroy-method。

需要注意的是,在实现 BeanPostProcessor 接口时,需要注意实现方法中的逻辑,避免破坏 Spring 容器的正常工作流程。例如,如果在 postProcessBeforeInitialization 方法中修改了 Bean 的属性值,则可能会影响到之后的 Bean 后置处理器的处理结果。