Spring框架中bean的生命周期

Bean生命周期:指的就是Bean从创建到销毁的整个过程!四个大步骤 :

1.实例化

        a.通过反射去推断构造函数进行实例化

        b.实例工厂、静态工厂

2.属性注入

        a.解释自动装配 (byname  bytype constractor none  @Autowired)  DI的体现 

        b.循环依赖

3.初始化

        a.调用XXXAware回调(BeanNameAware、BeanClassLoaderAware、BeanFactoryAware)

        b.调用初始化生命周期回调(三种)

        c.如果bean实现aop,会创建动态代理

4.销毁

        a.在spring容器 关闭的时候进行调用

        b.调用销毁生命周期回调

下图展示了bean装载到Spring应用上下文的一个典型的生命周期过程。

 

五步骤 -->> 七步骤 -->> 十步骤 过程分析:

Bean的 生命周期 十步骤总结:

相关注释:

其实这些都是扩展口,spring提供了很多,9销毁前可做回收资源等操作,4、5中间还有个@PostConstruct注解属于Servlet规范Spring也支持,7阶段bean已经准备好了可用于AOP扩展;

步骤 7 和步骤10,就是 spring 对外提供的一些扩展能力,提供给开发使用的,比如 Aware 接口,BeanPostProcessor接口,InitializingBean 接口以及DisposableBean接口,分别在 bean 初始化前,初始化后,销毁前。

b站其他视频参考 版本:

SpringBean的生命周期大致上分为五个阶段:

创建前准备:Bean在开始加载之前要从上下文和一些配置中去解析并且查找Bean有关扩展的实现,比如像‘init-method’,容器在初始化Bean的时候或调用的一个方法,destroy-method,容器在销毁Bean的时候会调用的一些方法,以及BeanFactoryPostProcessor这一类的Bean加载过程中的一些前置和后置的一些处理扩展实现,这些类和配置其实是Springr提供给开发者用来去实现Bean加载过程中的一些扩展,在很多和Spring集成的中间件也比较常见,比如Dubbo,这样一些中间件。

创建实例化:这个阶段主要作用是通过反射去创建Bean的实例对象,并且会扫描和解析Bean声明的一些属性

依赖注入:如果被实例化的Bean存在依赖其他Bean对象的一些情况,则需要对这些依赖的Bean进行对象注入,比如常见的@Autowired,以及setter注入等这样一些配置形式,同时在这个阶段会触发一些扩展的调用,比如说常见的扩展类BeanPOSTProcessors用来去实现Bean初始化前后的扩展回调,以及像BeanFactoryAware等等

容器缓存:主要是把Bean保存到容器以及Spring缓存中,到这个阶段的Bean就可以被开发者使用了,这个阶段涉及到的操作像init-method这个属性配置一些方法或者这个阶段会被调用,以及像BeanPOSTProcessors的后置处理器方法也会在这个阶段被触发

销毁实例:当Spring的应用上下文被关闭的时候,那么这个上下文中所有的Bean会被销毁,如果存在了Bean存在了DisposableBean接口或者配置了destroy-method属性的一些方法会在这个阶段被调用

补充图:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值