Spring bean的生命周期

本人将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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值