4.Spring bean的生命周期

Bean的完整生命周期可以认为是从容器创建初始化Bean开始,直到Spring容器关闭。

主要包括3个阶段:Bean定义(加载解析) -------> Bean实例化 ------> Bean初始化

具体来说的话:主要分为以下几个步骤:

1.实例化bean对象,设置对象属性(按照Bean定义信息配置信息,注入所有的属性,)

2.检查是否Aware相关接口并设置相关依赖

3.bean实例的初始化:包括->

        检查是否是IniitializingBean以及决定是否调用afterPropertiesSet方法

        检查是否配置有自定义的init-method

 

4.使用

5.容器关闭,bean销毁

 

但是围绕这些步骤中,也就是bean定义-bean实例化-bean初始化3个主要阶段,Spring又配置了很多后置处理器,用来对这些阶段进行动态扩展,主要是:BeanFactoryPostProcessor,BeanPostProcessor后置处理器

BeanFactoryPostProcessor后置处理器在bean实例化前后的初始化之前的操作

BeanPostProcessor后置处理器在bean初始化前后进行操作

所以bean的生命周期又会在这三个阶段的前后进行一些相关的扩展的步骤加入,具体来说:

 

1.bean定义解析加载阶段

比如:BeanDefinitionRegistryPostProcessor,这个接口是BeanDefinitionRegistry的后处理器,

它允许在BeanFactoryPostProcessor被调用之前对BeanDefinition做一些操作

他的postProcessBeanDefinitionRegistry方法在Bean被定义但还没被创建的时候执行.

2.bean实例化阶段前后

这个阶段前后主要是织入BeanFactoryPostProcessor后置处理器

BeanFactoryPostProcessor就是BeanFactory的后处理类, 我们可以在BeanFactory初始化之后做一些操作. 它提供了个postProcessBeanFactory()方法, 这个方法被调用的时候, 所有的Bean已经被创建, 但是还没有被初始化. 也就是说, 通过它我们可以在初始化任何Bean之前, 做各种操作, 甚至读取并修改BeanDefinition(bean定义的元数据).

3.bean初始化阶段前后

初始化之前:

  如果bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessBeforeInitialization()方法;

初始化之后:

如果bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessAfterInitialization()方法;

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值