Spring中bean的生命周期

在传统的Java应用中,bean的生命周期很简单,使用Java关键字new进行Bean的实例化,然后该Bean就能够使用了。一旦bean不再被使用,则由Java自动进行垃圾回收。
 
相比之下,Spring管理Bean的生命周期就复杂多了,正确理解Bean的生命周期非常重要,因为Spring对Bean的管理可扩展性非常强。由Spring IoC容器托管的对象,它们的生命周期完全由容器控制。


简述bean的生命周期

Spring容器初始化 -> bean构造器 -> bean字段注入 -> 【init-method】调用的init-method属性指定的初始化方法 -> 容器初始化成功 -> 单例bean的使用 -> 关闭容器 ->【destroy-method】调用的destroy-method属性指定的初始化方法 -> bean死亡


bean生命周期流程图

Spring Bean的完整生命周期从创建Spring容器开始,直到最终Spring容器销毁Bean,这其中包含了一系列关键点。

在这里插入图片描述
若容器注册了以上各种接口,程序那么将会按照以上的流程进行。


各种接口方法分类

Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类:

1、Bean自身的方法

这个包括了Bean本身调用的方法和通过配置文件中的init-method和destroy-method指定的方法

2、Bean级生命周期接口方法

这个包括了BeanNameAware、BeanFactoryAware、InitializingBean和DiposableBean这些接口的方法

3、容器级生命周期接口方法

这个包括了InstantiationAwareBeanPostProcessor 和 BeanPostProcessor 这两个接口实现,一般称它们的实现类为“后处理器”。

4、工厂后处理器接口方法

这个包括了AspectJWeavingEnabler, ConfigurationClassPostProcessor, CustomAutowireConfigurer等等非常有用的工厂后处理器接口的方法。工厂后处理器也是容器级的。在应用上下文装配配置文件之后立即调用。


bean的生命周期流程图

在这里插入图片描述
面试中经常问到的bean的生命周期,先看绿色的部分,bean的创建过程:

第1步:调用bean的构造方法创建bean;

第2步:通过反射调用setter方法进行属性的依赖注入;

第3步:如果实现BeanNameAware接口的话,会设置bean的name;

第4步:如果实现了BeanFactoryAware,会把bean factory设置给bean;

第5步:如果实现了ApplicationContextAware,会给bean设置ApplictionContext;

第6步:如果实现了BeanPostProcessor接口,则执行前置处理方法;

第7步:实现了InitializingBean接口的话,执行afterPropertiesSet方法;

第8步:执行自定义的init方法;

第9步:执行BeanPostProcessor接口的后置处理方法。

这时,就完成了bean的创建过程。

在使用完bean需要销毁时,会先执行DisposableBean接口的destroy方法,然后在执行自定义的destroy方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值