【Java第34期】:Bean的六种作用域

news2025/7/19 9:00:47

作者:有只小猪飞走啦

博客地址:https://blog.csdn.net/m0_62262008?type=blog

内容:介绍Bean的六种作用域的效果以及适用场景

在这里插入图片描述

文章目录

  • 前言
  • 一,作用域定义以及Bean的六种作用域是什么?
  • 二,singleton(单例作用域)
  • 三,prototype(原型作用域(多例作用域))
  • 四,request(请求作用域)
  • 五,session(回话作用域)
  • 六,application(全局作用域)
  • 七,websocket( HTTP WebSocket 作用域)

前言

本博客内容是小博主在学习之后的总结,如果哪里有错误或者不太完善的都可以私聊我哈,如果哪里你不太理解的也可以来私聊我哦~

一,作用域定义以及Bean的六种作用域是什么?

我们常说的作用域是限定程序中变量的可用范围或者是源代码中定义变量的某个区域。那么Bean的作用域是什么呢?
Bean的作用域是指Bean在Spring整个框架中的某种行为模式,比如singleton单例作用域,就表示Bean在整个Spring中只有一份,它是全局共享的,当其他人修改了这个值之后,另一个人读取到的就是被修改的值。
Spring容器在初始化一个Bean的实例时,同时会指定该实例的作用域,Spring有六种作用域,其中有四种是基于Spring MVC 生效的,Bean的六种作用域:
1,singleton : 单例作用域
2,prototype:原型作用域(多例作用域)
3,request:请求作用域
4,session:回话作用域
5,application:全局作用域
6,websocket: HTTP WebSocket 作用域

下面我们一一详细来介绍每种作用域:

二,singleton(单例作用域)

● 官⽅说明:(Default) Scopes a single bean definition to a single object instance for each Spring IoC container.
● 描述:该作⽤域下的Bean在IoC容器中只存在⼀个实例:获取Bean(即通过applicationContext.getBean等⽅法获取)及装配Bean(即通过@Autowired注⼊)都是同⼀个对象。
● 场景:通常⽆状态的Bean使⽤该作⽤域。⽆状态表示Bean对象的属性状态不需要更新
● 备注:Spring默认选择该作⽤域

三,prototype(原型作用域(多例作用域))

● 官⽅说明:Scopes a single bean definition to any number of object instances.
● 描述:每次对该作⽤域下的Bean的请求都会创建新的实例:获取Bean(即通过applicationContext.getBean等⽅法获取)及装配Bean(即通过@Autowired注⼊)都是新的对象实例。
● 场景:通常有状态的Bean使⽤该作⽤域

四,request(请求作用域)

● 官⽅说明:Scopes a single bean definition to the lifecycle of a single HTTP request. That is, each HTTP request has its own instance of a bean created off the back of a single bean definition. Only valid in the context of a web-aware Spring ApplicationContext.
● 描述:每次http请求会创建新的Bean实例,类似于prototype
● 场景:⼀次http的请求和响应的共享Bean
● 备注:限定SpringMVC中使⽤

五,session(回话作用域)

● 官⽅说明:Scopes a single bean definition to the lifecycle of an HTTP Session. Only valid in the context of a web-aware Spring ApplicationContext.
● 描述:在⼀个http session中,定义⼀个Bean实例
● 场景:⽤户回话的共享Bean, ⽐如:记录⼀个⽤户的登陆信息
● 备注:限定SpringMVC中使⽤

六,application(全局作用域)

● 官⽅说明:Scopes a single bean definition to the lifecycle of a ServletContext. Only valid in the context of a web-aware Spring ApplicationContext.
● 描述:在⼀个http servlet Context中,定义⼀个Bean实例
● 场景:Web应⽤的上下⽂信息,⽐如:记录⼀个应⽤的共享信息
● 备注:限定SpringMVC中使⽤

七,websocket( HTTP WebSocket 作用域)

● 官⽅说明:Scopes a single bean definition to the lifecycle of a WebSocket. Only valid in the context of a web-aware Spring ApplicationContext.
● 描述:在⼀个HTTP WebSocket的⽣命周期中,定义⼀个Bean实例
● 场景:WebSocket的每次会话中,保存了⼀个Map结构的头信息,将⽤来包裹客户端消息
头。第⼀次初始化后,直到WebSocket结束都是同⼀个Bean。
● 备注:限定Spring WebSocket中使⽤

以上就是Bean的六种作用域的作用以及应用场景,希望对你有帮助!
记得关注小猪哦!
下期再见啦~
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习(20):nerf论文翻译与学习

目录 1 Introduction 2 Related Work 3 Neural Radiance Field Scene Representation 4 Volume Rendering with Radiance Fields 5 Optimizing a Neural Radiance Field 5.1 Positional encoding 5.2 Hierarchical volume sampling 5.3 Implementation details 6 Resu…

项目问题参考答案

文章目录项目业务的功能:1 完成部门管理模块(大致有药剂部门,诊疗部门、护理部门,后勤部门),2.在药品搜索模块,根据业务的需求,我封装了正则实现了模糊搜索,防抖工具函数…

分享105个NET源码ASP源码,总有一款适合您

分享105个NET源码,总有一款适合您 源码下载链接:https://pan.baidu.com/s/1zFMIHX6juXdR2CaHMEr5mQ?pwdf5hz 提取码:f5hz 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载后…

力扣(LeetCode)81. 搜索旋转排序数组 II(C++)

线性探测二分查找 本题和 力扣(LeetCode)33. 搜索旋转排序数组(C) 的唯一区别是有重复元素,思考我们之前的二分条件,是根据 nums[0]nums[0]nums[0] 和 nums[mid]nums[mid]nums[mid] 判断 midmidmid 哪一端有序,但是现在可能出现 nums[0]nums…

Metabase学习教程:视图-7

创建数据透视表 了解如何使用Metabase中的不同数据库创建透视表。 什么是透视表?数据透视表是一种汇总和分组数据的表格方式。它们是分析师工具箱中的一个有价值的工具,因为它们是展示和重新安排大量信息的有效方法。它们的工作原理如下: …

中华传统文化题材网页设计主题:基于HTML+CSS设计放飞青春梦想网页【学生网页设计作业源码】

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

应用ceph块存储(ceph-13.2.10)

记录:334 场景:在CentOS 7.9操作系统上,部署ceph-13.2.10集群。应用ceph块设备(ceph block device);主要是创建ceph块存储、块存储分区、在线扩容、离线缩容、删除块存储等操作。 版本: 操作系统:CentOS…

gateway网关转发请求到nacos不同namespace和不同group下服务实例源码改造

问题 gateway转发请求到微服务,报错误页面,错误信息如下所示: There was an unexpected error (typeService Unavailable, status503). Unable to find instance xxx 报错信息显示找不到应用实例。即gateway无法在nacos实例中获取到路由配置的对应实例…

2021 XV6 5:Copy-on-Write Fork

目录 1.概述 2.修改uvmcopy 3.修改trap.c 4.引用计数机制 5.修改copyout 6.结果 1.概述 首先,这是一个很有意义的性能优化方案。 提出的背景是,如果我们每次fork的时候,都完整分配一系列物理页把父进程的内容拷贝进来,是一…

【SpringBoot】定制⾃⼰的 Health Indicator

Spring Boot ⾃带的 Health Indicator ⽬的 检查应⽤程序的运⾏状态 状态 DOWN - 503OUT_OF_SERVICE - 503UP - 200UNKNOWN - 200 机制 通过 HealthIndicatorRegistry 收集信息HealthIndicator 实现具体检查逻辑 配置项 management.health.defaults.enabledtrue|falsem…

【学习笔记】Reids的哨兵机制

【学习笔记】Reids的哨兵机制 文章目录【学习笔记】Reids的哨兵机制前言什么是哨兵机制?如何判断主库是否挂掉?主从库的切换和消息的通知前言 什么是哨兵机制? 哨兵机制(sentinel) 是Redis解决高可用的一种解决方案&a…

视频会议解决方案-最新全套文件

视频会议解决方案-最新全套文件一、建设背景二、建设思路业务挑战三、建设方案四、获取 - 视频会议全套最新解决方案合集一、建设背景 随着中国经济的迅速发展,很多企业的发展也进入快车道,分支机构越来越多,形成了遍布全国范围甚至全球范围…

Echarts:惊艳的Map

大家在网上看天气预报的时候应该就看到过在中国地图上显示不同省份的温度,并根据温度的高低显示不同的颜色,又或者看到各个省份的新冠肺炎新增人数,根据不同的新增人数显示不同的颜色之类的图像。这些,使用echarts中的map就可以实…

python实现灰色关联法(GRA)

原文:https://mp.weixin.qq.com/s/Uuri-FqRWk3V5CH7XrjArg 1 灰色关联分析法简介 白色系统是指信息完全明确的系统,黑色系统是指信息不完全明确的系统,而灰色系统是介于白色与黑色系统之间的系统,是指系统内部信息和特征是部分已…

IDEA设置和相关快捷键记录汇总

IDEA设置和相关快捷键 前言 Java 开发 现在基本都是使用 IDEA 作为开发工具,IDEA 有很多设置和常用的快捷键,熟悉之后能更好的提高开发效率,这里总结了下从慕课网的内容 开发工具IDEA从入门到爱不释手-慕课网 (imooc.com),摘录做…

Kafka - 04 Java客户端实现消息发送和订阅

1. Kafka测试命令行操作 1. 主题命令行操作 在上一节中我们安装了Kafka单机环境和集群环境,这一节来测试下Linux环境安装Kafka后的命令行操作。 我们之前在用Windows环境安装Kafka Kafka应用场景|基础架构|Windows安装|命令行操作 和命令行操作时,讲到…

哪种类型的蓝牙耳机好?超高性价比蓝牙耳机推荐

朋友让我推荐蓝牙耳机的时候,总是喜欢问哪款蓝牙耳机的性能更强,想要直接入手那款性能更强的蓝牙耳机,以此节省对比的时间。但是用户自行进行对比的步骤,显然是不能省的,所以推荐这四款高性价比的蓝牙耳机,…

华为云桌面Workspace,让你的办公更加舒适惬意

在各行各业转型的过程中,企业对于线上办公的需求不断增多,越来越需要一个云办公平台,为企业更好实现数字化网络化办公降本增效。正逢佳节之际,在此为各大企业推荐一个高效的办公神器——华为云桌面Workspace。相信作为企业决策者的…

详解设计模式:抽象工厂模式

工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过工厂父类定义负责创建产品的公共接口,子类负责生产具体对象。可以理解为简单工程模式的升级,解决简单工厂模式的弊端。 ~ 本篇内容包括:关于…

Executors-四种创建线程的手段

1 Executors.newCachedThreadPool() 从构造方法可以看出,它创建了一个可缓存的线程池。当有新的任务提交时,有空闲线程则直接处理任务,没有空闲线程则创建新的线程处理任务,队列中不储存任务。线程池不对线程池大小做限制&#x…