携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情
前言
作为目前Java后端开发最流行的框架之一,不管是工作还是面试,还是自我学习,对Spring的掌握都不可或缺。
Spring中Bean的创建阶段生命周期
Bean的生命周期主要包括:
- 实例化Bean
- 设置Bean的属性
- 如果实现了Aware接口,定义了Spring容器基础级别相关的依赖关系,则会对Bean进行注入,例如:BeanNameAware会注入Bean Id、BeanFactoryAware 会注入Bean Factory、ApplicationContextAware会注入ApplicationContext
- 调用 BeanPostProcessor 的前置初始化方法 postProcessBeforeInitialization
- 当Bean实现了 InitializingBean 接口,则会调用 afterPropertiesSet 方法。
- 调用 Bean 自身定义的 init 方法
- 调用 BeanPostProcessor 的后置初始化方法 postProcessAfterInitialization
- 创建Bean完成
以上就是Bean的全部创建阶段的生命周期。
Spring中Bean的销毁阶段生命周期
Sprin中Bean的销毁和创建类似,也是定义了一些销毁过程中会调用的方法。
- 调用 DisposableBean 的 destroy 方法
- 调用Bean 中自定义实现的destroy方法
Spring的作用域
Spring的作用域主要包含5种:
- Singleton:顾名思义,这是单例的,表示Spring种每个Bean只会创建唯一一个Bean实例,这也是Spring中默认的作用域
- Prototype:和Singleton相反,Spring中的Bean可以创建多个Bean实例,并且是在每次获取Bean的时候创建
- Request:为每个 HTTP 请求创建单独的 Bean 实例
- Session:作用于 Session 范围
- GlobalSession:用于某些特定的容器,提供全局Session
总结
在微服务盛行的时代,了解Spring的生命周期和作用域是很有必要的,几乎所有Bean的生命周期都是交由Spring进行管理的, 提供了例如BeanPostProcessor、Aware等功能接口,可以使我们很方便的插手Bean的实例化过程。