Spring Bean的生命周期

Spring Bean的生命周期指的是Bean从创建到初始化再到销毁的过程,这个过程由IOC容器管理。

Bean的生命周期大致分为以下四个阶段:

  • Bean的初始化(Instantiation)。
    • Spring容器通过扫描配置文件来获取bean信息,使用反射技术创建Bean的实例,默认为单例;
  • Bean的属性赋值(Populate)。
    • 通过解析property,为bean设置属性,通过依赖注入的方式注入其他bean的信息;
  • Bean的实例化(Initialization)。
    • 如果bean实现了BeanNameAware接口,Spring将bean的名称传给setBeanName()方法;
    • 如果bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory实例传进来;
    • 如果bean实现了ApplicationContextAware接口,它的setApplicationContext()方法将被调用,将应用上下文的引用传入到bean中;
    • 如果bean实现了BeanPostProcessor接口,它的postProcessBeforeInitialization()方法将被调用;
    • 如果bean中有方法添加了@PostConstruct注解,那么该方法将被调用;
    • 如果bean实现了InitializingBean接口,spring将调用它的afterPropertiesSet()接口方法,类似的如果bean使用了init-method属性声明了初始化方法,该方法也会被调用;
    • 如果在xml文件中通过标签的init-method元素指定了初始化方法,那么该方法将被调用;
    • 如果bean实现了BeanPostProcessor接口,它的postProcessAfterInitialization()接口方法将被调用;

此时bean已经准备就绪,可以被应用程序使用了,他们将一直驻留在应用上下文中,直到该应用上下文被销毁。

  • Bean的销毁(Destruction)
    • 如果bean中有方法添加了@PreDestroy注解,那么该方法将被调用;
    • 若bean实现了DisposableBean接口,spring将调用它的distroy()接口方法。同样的,如果bean使用了destroy-method属性声明了销毁方法,则该方法被调用;

 

posted @ 2023-01-06 02:10  Amireux-126  阅读(9)  评论(0)    收藏  举报