Spring中Bean的生命周期

96 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情

前言

作为目前Java后端开发最流行的框架之一,不管是工作还是面试,还是自我学习,对Spring的掌握都不可或缺。

Spring中Bean的创建阶段生命周期

Bean的生命周期主要包括:

  1. 实例化Bean
  2. 设置Bean的属性
  3. 如果实现了Aware接口,定义了Spring容器基础级别相关的依赖关系,则会对Bean进行注入,例如:BeanNameAware会注入Bean Id、BeanFactoryAware 会注入Bean Factory、ApplicationContextAware会注入ApplicationContext
  4. 调用 BeanPostProcessor 的前置初始化方法 postProcessBeforeInitialization
  5. 当Bean实现了 InitializingBean 接口,则会调用 afterPropertiesSet 方法。
  6. 调用 Bean 自身定义的 init 方法
  7. 调用 BeanPostProcessor 的后置初始化方法 postProcessAfterInitialization
  8. 创建Bean完成

以上就是Bean的全部创建阶段的生命周期。

Spring中Bean的销毁阶段生命周期

Sprin中Bean的销毁和创建类似,也是定义了一些销毁过程中会调用的方法。

  1. 调用 DisposableBean 的 destroy 方法
  2. 调用Bean 中自定义实现的destroy方法

Spring的作用域

Spring的作用域主要包含5种:

  1. Singleton:顾名思义,这是单例的,表示Spring种每个Bean只会创建唯一一个Bean实例,这也是Spring中默认的作用域
  2. Prototype:和Singleton相反,Spring中的Bean可以创建多个Bean实例,并且是在每次获取Bean的时候创建
  3. Request:为每个 HTTP 请求创建单独的 Bean 实例
  4. Session:作用于 Session 范围
  5. GlobalSession:用于某些特定的容器,提供全局Session

总结

在微服务盛行的时代,了解Spring的生命周期和作用域是很有必要的,几乎所有Bean的生命周期都是交由Spring进行管理的, 提供了例如BeanPostProcessor、Aware等功能接口,可以使我们很方便的插手Bean的实例化过程。