Spring Bean的生命周期

Spring框架中的生命周期主要涉及到Spring容器的Bean的生命周期。一个Bean的生命周期从创建开始,直到销毁,Spring提供了多种方式来干预这个过程中的各个阶段。以下是Spring中Bean的基本生命周期过程:

  1. 定义(Definition)
    • 开发者通过XML配置、注解或Java配置定义Bean。
  2. 初始化(Instantiation)
    • Spring容器通过反射机制创建Bean的实例。
  3. 设置属性(Populate Properties)
    • 如果Bean有依赖其他的Bean,Spring容器会注入这些依赖。
  4. 调用BeanNameAware的setBeanName()
    • 如果Bean实现了BeanNameAware接口,Spring会调用setBeanName()方法,传入Bean的ID。
  5. 调用BeanFactoryAware的setBeanFactory()
    • 如果Bean实现了BeanFactoryAware接口,Spring会调用setBeanFactory()方法,传入BeanFactory的实例。
  6. 调用ApplicationContextAware的setApplicationContext()
    • 如果Bean实现了ApplicationContextAware接口,Spring会调用setApplicationContext()方法,传入ApplicationContext的实例。
  7. 调用BeanPostProcessor的postProcessBeforeInitialization()
    • 如果容器中有实现BeanPostProcessor接口的Bean,Spring会在初始化方法之前调用它的postProcessBeforeInitialization()方法。
  8. 调用InitializingBean的afterPropertiesSet()
    • 如果Bean实现了InitializingBean接口,Spring会调用afterPropertiesSet()方法。
  9. 调用自定义的初始化方法
    • 如果在Bean定义时指定了自定义的初始化方法(例如init-method="init"),Spring会调用这个方法。
  10. 调用BeanPostProcessor的postProcessAfterInitialization()
    • 容器中的BeanPostProcessor接口的Bean,Spring会在初始化方法之后调用它的postProcessAfterInitialization()方法。
  11. 使用(Use)
    • 这时,Bean已经准备好,可以被应用程序使用。
  12. 调用DisposableBean的destroy()
    • 当容器关闭时,如果Bean实现了DisposableBean接口,Spring会调用destroy()方法。
  13. 调用自定义的销毁方法
    • 如果在Bean定义时指定了自定义的销毁方法(例如destroy-method="cleanup"),Spring会调用这个方法。
      在整个生命周期中,Spring也提供了其他扩展点,如@PostConstruct@PreDestroy注解,它们分别标记在Bean初始化之前和销毁之前的操作。
      了解Spring Bean的生命周期对于开发复杂的Spring应用是非常重要的,因为它允许开发者在Bean创建和销毁的时候执行特定的逻辑,比如资源分配和清理。

感谢关注!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。