当前位置:网站首页>3.Bean的作用域与生命周期
3.Bean的作用域与生命周期
2022-08-02 01:27:00 【你真是猫改不了吃小鱼干】
目录
作用域定义
Bean 的作用域是指 Bean 在 Spring 整个框架中的某种行为模式,比如 singleton 单例作用域,就 表示 Bean 在整个 Spring 中只有一份,它是全局共享的,那么当其他人修改了这个值之后,那么另一 个人读取到的就是被修改的值。
Bean 的 6 种作用域
Spring 容器在初始化一个 Bean 的实例时,同时会指定该实例的作用域。Spring有 6 种作用域,最后四 种是基于 Spring MVC 生效的:
\1. singleton:单例作用域-->Spring默认选择该作用域
\2. prototype:原型作用域(多例作用域)
-->每次对该作用域下的Bean的请求都会创建新的实例:获取Bean(即通过applicationContext.getBean等方法获取)及装配Bean(即通过@Autowired注入)都是新的对象实例。
\3. request:请求作用域(一个请求响应范围)
\4. session:回话作用域(一个会话的范围)
\5. application:全局作用域(了解)
\6. websocket:HTTP WebSocket 作用域(了解)
注意:后 4 种状态是 Spring MVC 中的值,在普通的 Spring 项目中只有前两种。

Bean 执行流程
Bean 执行流程(Spring 执行流程):启动 Spring 容器 -> 实例化 Bean(分配内存空间,从无到有) -> Bean 注册到 Spring 中(存操作) -> 将 Bean 装配到需要的类中(取操作)。
Bean 生命周期
Bean 的生命周期分为以下 5 大部分:
1.实例化 Bean(为 Bean 分配内存空间,类似于new对象)
2.设置属性(Bean 注入和装配)
3.Bean 初始化
3.1实现了各种 Aware 通知的方法,如 BeanNameAware、BeanFactoryAware、 ApplicationContextAware 的接口方法;
3.2执行 BeanPostProcessor 初始化前置方法;
3.3.1执行 @PostConstruct 初始化方法,依赖注入操作之后被执行;
3.3.2执行自己指定的 init-method 方法(如果有指定的话);
3.4执行 BeanPostProcessor 初始化后置方法。
4.使用Bean
5.销毁Bean(容器关闭才可销毁)
执行流程

边栏推荐
- 当关注「互联网+」模式的时候,通常仅仅只是在关注「互联网+」模式本身
- 信息化和数字化的本质区别是什么?
- 技术分享 | 接口测试中如何使用Json 来进行数据交互 ?
- Entry name ‘org/apache/commons/codec/language/bm/gen_approx_greeklatin.txt’ collided
- ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘解决方法
- Kubernetes — 网络流量模型
- GO开发环境配置
- typescript34-class的基本使用
- R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、自定义修改描述性统计参数输出自定义统计量
- Flask gets post request parameters
猜你喜欢

字节给我狠狠上了一课:危机来的时候你连准备时间都没有...

hash table

Byte taught me a hard lesson: When a crisis comes, you don't even have time to prepare...

kubernetes之服务发现

Debian侵犯Rust商标,妥协改名还是会得到豁免?

ERROR 1819 (HY000) Your password does not satisfy the current policy requirements

外包干了三年,废了...

大话西游创建角色失败解决

Pcie the inbound and outbound

【Brush the title】Family robbery
随机推荐
typescript32-ts中的typeof
typescript33-typescript高级概述
内部类、异常简单介绍(第十天)
超大规模的产业实用语义分割数据集PSSL与预训练模型开源啦!
tf.keras.callbacks.EarlyStopping()
ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘解决方法
Kubernetes — Flannel
Shell入门终章
Go 1.18 的那些事——工作区、模糊测试、泛型
PHP直播源码实现简单弹幕效果的相关代码
typescript31-any类型
网络请求技术--跨域
dayjs时间处理库的基本使用
秒懂大模型 | 3步搞定AI写摘要
FlinkSQL CDC实现同步oracle数据到mysql
Navicat data shows incomplete resolution
滴滴秋招提前批正式开始,现在投递免笔试
mapbox使用教程
ofstream,ifstream,fstream读写文件
Interview: Briefly describe a project you are involved in