Spring Bean生命周期执行流程

Spring Bean生命周期执行流程

2023.3.31

Spring 生命周期可以分为五个阶段:创建前准备创建实例依赖注入容器缓存销毁实例

  • 创建前准备阶段

这个阶段主要的作用是:Bean 在开始加载之前,需要从上下文和相关配置中解析并查找 Bean 有关的扩展实现,比如像 init-method(容器在初始化 bean 时调用的方法)、destory-method(容器在销毁 bean 时调用的方法)。以及BeanFactoryPostProcessor 这类的 bean 加载过程中的前置和后置处理。这些类或者配置其实是 Spring 提供给开发者用来实现 Bean 加载过程中的扩展机制,在很多和 Spring 集成的中间件中比较常见,比如 Dubbo

  • 创建实例阶段

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

  • 依赖注入阶段

如果被实例化的 Bean 存在依赖其他 Bean 对象的情况,则需要对这些依赖 Bean进行对象注入。比如常见的@Autowiredsetter 注入等依赖注入的配置形式。同 时 , 在 这 个 阶 段 会 触 发 一 些 扩 展 的 调 用 , 比 如 常 见 的 扩 展 类 :BeanPostProcessors(用来实现 bean 初始化前后的扩展回调)、InitializingBean(这个类有一个afterPropertiesSet(),这个在工作中也比较常见)、BeanFactoryAware 等等。

  • 容器缓存阶段

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

  • 销毁实例阶段

当 Spring 应用上下文关闭时,该上下文中的所有 bean 都会被销毁。如果存在 Bean 实现了 DisposableBean 接口,或者配置了 destory-method 属性,会在这个阶段被调用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值