Spring bean的生命周期

来源:互联网 发布:淘宝企业店铺交税问题 编辑:程序博客网 时间:2024/06/05 05:06

本人将Spring的生命周期分为5个阶段。

  1. Java实例的创建
    实例化一个对象,并将值和bean的引用注入到bean对应的属性中。
    首先是实例化,之后是将值和其他bean的引用注入到bean对应的属性中。
  2. Spring容器相关注入
    将Srping容器相关的信息注入到实例中。如bean的ID、Bean的工厂、Bean的上下文。
    如果bean实现了BeanNameAware接口,则框架调用setBeanName方法,将bean的ID赋值进去。
    如果bean实现了BeanFactoryAware接口,则框架调用setBeanFactory方法将工厂赋值进去。
    如果bean实现了ApplicationContextAware接口,则框架调用setApplicationContext方法将容器赋值进去。
  3. 初始化
    调用一系列初始化的方法。
    首先是预初始,如果bean实现了BeanPostProcessor接口,则Spring将调用postProcessorBeforeInitialization方法。
    然后是初始化,如果bean实现了InitializingBean接口,则Spring调用afterProperties方法
    接着还是一个初始化,如果用户在配置中定义了init-method属性,则该bean会调用自定义的初始化方法。
    接着是初始化后方法。如果bean实现了BeanPostProcessor接口,则调用postProcessAfterInitialization方法。
  4. 使用阶段
    bean存活并服务于应用程序。
  5. 销毁阶段
    在容器关闭的过程中,如果bean实现了DiposableBean接口,则Spring调用destroy方法。
    如果配置中配置了destroy-method方法,则Spring会调用该方法。

整个过程如下图所示:

Created with Raphaël 2.1.0开始实例化填充属性调用BeanNameAware的setBeanName()方法调用BeanFactoryAware的setBeanFactory()方法调用ApplicationContextAware的SetApplicationContext方法调用BeanPostProcessor的预初始化方法调用InitialiazingBean的afterPropertiesSet()方法调用自定义的初始化方法调用BeanPostProcessor的初始化后方法bean的使用阶段调用DisposableBean的destroy方法调用自定义的销毁方法结束
0 0
原创粉丝点击