Springboot bean生命周期

生命周期

Bean的生命周期的过程,它大致分为Bean定义、Bean的初始化、Bean 的生存期和Bean的销毁4个部分。其中Bean定义过程大致如下:

  • Spring通过我们的配置,如@ComponentScan 定义的扫描路径去找到带有 @Component的类,这个过程就是一个资源定位的过程。
  • 一旦找到了资源,那么它就开始解析,并且将定义的信息保存起来。注意,此时还没有初始化Bean,也就没有Bean的实例,它有的仅仅是Bean的定义。
  • 然后就会把Bean定义发布到SpringIoC容器中。此时,IOC容器也只有Bean的定义,还是没有Bean的实例生成。

完成了这3步只是一个资源定位并将Bean的定义发布到IoC容器的过程,还没有Bean实例的生成,更没有完成依赖注入。在默认的情况下,Spring会继续去完成Bean的实例化和依赖注入,这样从IoC容器中就可以得到一个依赖注入完成的Bean。但是,有些Bean会受到变化因素的影响,这时我们倒希望是取出Bean的时候完成初始化和依赖注入,换句话说就是让那些Bean只是将定义发布到IoC容器而不做实例化和依赖注入,当我们取出来的时候才做初始化和依赖注入等操作。

Spring bean的初始化流程:

Spring 初始化bean

  • 这些接口和方法是针对什么而言的, 对于下图在没有注释的情况下的流程节点都是针对单个Bean 的,但是 BeanPostProcessor 是针对所有 Bean 的,这是我们需要注意的地方。

Spring Bean 生命周期

bean 生命周期

  • 即使你定义了ApplicationContextAware接口,但是有时候并不会调用,这要根据你的IoC容器来决定。我们知道,Spring IoC容器最低的要求是实现BeanFactory 接口,而不是实现ApplicationContext接口。对于那些没有实现ApplicationContext 接口的容器,在生命周期对应的ApplicationContextAware定义的方法也是不会被调用的,只有实现了ApplicationContext接口的容器,才会在生命周期调用ApplicationContextAware 所定义的setApplicationContext方法。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值