Spring为什么默认是单例的?

目录

一、五种作用域

二、单例bean与原型bean的区别

 三、单例Bean的优势与劣势


一、五种作用域

1.singleton:

singleton是Spring Bean的默认作用域,也就是单例模式。在整个应用程序中,只会创建一个实例,Bean的所有请求都会共享这个实例。

2.prototype:

prototype表示原型模式,每次请求都将创建一个新的Bean实例。因此,在应用程序中可以有多个实例,这些实例之间不会相互影响。

3.request:

request表示在HTTP请求范围内创建Bean实例。每次发出HTTP请求时,都会创建一个新的Bean实例,这个Bean实例只能在当前请求中使用。

4.session:

session表示在HTTP会话范围内创建Bean实例。在一次会话期间,只会创建一个Bean实例。如果在同一个会话期间发出多个请求,这些请求都将共享同一个Bean实例。

5.globalsession:

globalsession表示在全局HTTP会话范围内创建Bean实例。这个作用域只适用于基于portlet的Web应用程序。对于其他类型的Web应用程序,globalsession作用域与session作用域是相同的。

二、单例bean与原型bean的区别

如果一个Bean被声明为单例的时候,在处理多次请求的时候在Spring容器里面只实例化出一个Bean,后续的请求都公用这个对象,这个对象会保存到一个map里面。当有请求进来的时候,会先从缓存(map)里查看有没有,有的话直接使用这个对象,没有的话才实例化一个新的对象,所以这是个单例的。但是对于原型(prototype)bean来说,当每次请求进来的时候直接实例化新的bean,没有缓存以及从缓存查的过程。

 三、单例Bean的优势与劣势

优势:

1、减少了新生成实例的消耗:新生成实例消耗包括两方面,第一,Spring会通过反射或者cglib来生成bean实例,这都是消耗性能的操作,其次给对象分配内存也会涉及复杂算法。

2、减少jvm垃圾回收 :由于不会给每个请求都新生成bean实例,所以自然回收的对象少了。

3、可以快速获取到 bean:因为单例的获取bean操作除了第一次生成之外其余的都是从缓存里获取的,所以很快。

劣势:

单例的 bean一个很大的劣势就是他不能做到线程安全!!!由于所有请求都共享一个 bean实例,所以这个 bean要是有状态的一个 bean的话可能在并发场景下出现问题,而原型的 bean则不会有这样问题(但也有例外,比如他被单例 bean依赖),因为给每个请求都新创建实例。

 

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

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

相关文章

如何打造微信私域?

现如今,微信已经从社交通讯软件,慢慢被默认为常规办公软件,工作沟通、业务洽谈、网络会议等都在微信上进行,完全变成职场首选的社交工具。 然而,由于微信平台的限制,很多企业在微信私域营销方面遇到了很多…

Linux中的ACL以及加固

ACL访问控制 // ACL:Access Control List 访问控制列表 // -p :以原始格式显示 ACL [rootzbx ~]# getfacl -p /root/ // 查看ACL策略 # file: /root/ # owner: root # group: root user::r-x group::r-x other::--- 设置ACL策略 // -m : 修改文件的ACL // -b : 表示删除所有的…

分享140个HTML公司企业模板,总有一款适合您

分享140个HTML公司企业模板,总有一款适合您 140个HTML公司企业模板下载链接:https://pan.baidu.com/s/1C38R80gdY8SMGz3FpDDzAA?pwddl21 提取码:dl21 Python采集代码下载链接:采集代码.zip - 蓝奏云 商务网站手机wap模板下载…

也谈用户体验这件小事

对于我这种非产品经理出身的普通人,谈“用户体验”是不是有点不自量力? 用户体验是“小事”吗?普通人懂吗?可能在产品经理的眼中,用户体验不是一般人都能懂的。可是产品做出来之后,是给谁体验的呢&#xff…

怎么学习linux

内容简介 本书源自日均阅读量近万次火爆的线上同名课程,口碑与影响力俱佳,旨在打造简单易学且实用性强的轻量级 Linux 入门教程。 本书基于红帽 RHEL 系统编写,且内容通用于 CentOS、Fedora 等系统。本书共分为20章,内容涵盖了部…

Android最新面试实战总结

热文导读 | 点击标题阅读 金九银十跳槽季如何进阶找到合适满意的工作? Spring中的9种设计模式汇总 凛冬将至?对互联网行业人员流动性的一些看法(深度好文) 作者:骑小猪看流星 来源:http://www.apkbus.com/blog-973383-79263.html…

基于java的学生信息管理系统(含源文件)

欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 内容摘要 - 2 - 引言 - 4 - 学生信息管理系统开发的意义和目的 - 4 - 国内研究现状和应用前景 - 4 - 研究课题主要内容 - 5 - 第1章 需求分析 - 6 - 第2章…

基于java的学生学籍管理系统(含源文件)

欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 目录 内容摘要 - 2 - 引言 - 4 - 学生学籍管理系统开发的意义和目的 - 4 - 国内研究现状和应用前景 - 4 - 研究课题主要内容 - 5 - 第1章 需求分析 - 6 - …

“独裁”的张小龙和他的微信帝国诞生记

2010年11月20日这一天,在广州,一个六七人的产品小组正式组建。2011年10月1日,这个产品小组的一款产品登上了中国移动互联网即时通讯工具软件第一的位置。 这款产品叫“ 微信”,主导了这款产品的人是 张小龙,时任腾讯…

罗永浩“咬定”微信不放松

作者 | 胡巍巍 来源 | CSDN(CSDNnews) 昨天,1月15日,听起来是很普通的一天。 但是,历史上的这一天——公元8年1月15日,是王莽建立新朝、西汉结束的日子。 2011年后的这一天,有一个八岁的国民社交…

Nginx:Rewrite

Nginx:Rewrite 一、常用的Nginx 正则表达式二、location2.1 location 大致可以分为三类2.2 location 常用的匹配规则2.3 location 优先级2.4 实际网站使用中,至少有三个匹配规则定义 三、rewrite3.1 rewrite功能3.2 rewrite跳转实现3.3 rewrite 执行顺序…

一文读懂微信之父张小龙:失败天才、颠覆者、独裁者、人性操控师

本文内容原载于《博客天下》总第136期,网络版原文首发于钛媒体(原文链接:tmtpost.com/62285.html),原文撰稿:杨林、王万圆、苏雄、甘韵仪。 1、背景和概述 2010年11月20日这一天,在广州&#x…

vite技术揭秘--环境变量

目录 环境变量 生产环境替换 自定义环境变量 .env 文件 环境加载优先级 自定义环境变量 模式 TypeScript 的智能提示 在node环境里使用环境变量 前言 我们开发中不可避免的要根据环境变量来做一些逻辑分支,在vite中有两种实现方式,即define和.env…

Python接口自动化之yaml配置文件

Python自动化测试:7天练完这60个实战项目,年薪过35w。 软件测试技术分享总结 在自动化过程中,需要使用配置文件储存数据,比如数据库信息、账号信息、域名等。 其中,yaml文件是一种配置文件类型,相比较in…

基于大模型构建本地知识库

基于大模型构建本地知识库 图文概述一、知识库构建1.文本加载和读取2.文本分割3.文本向量化英文排行版中文SOTA 二、向量搜索1.向量存储2.用户问题向量化3.知识库中搜索和问题最相似的topK个向量 三、大模型理解四、问题 图文概述 一、知识库构建 1.文本加载和读取 支持的格式…

Jenkins重启报错解决

在Jenkins上安装了一些插件后,需要重启Jenkins,由于忘了当初是怎么重启的,所以就问了GPT,下面是它的回答: 我想着,jenkins运行的好好的,还看什么状态,直接restart,然后……

智能出行更安全,亚马逊云科技携手木卫四助汽车客户安全合规出海

木卫四(北京)科技有限公司在汽车网络安全领域拥有独特专业知识,其融合人工智能算法的安全检测引擎可以不依赖车辆中安装的代理软件,只需几周即可快速部署实施,是汽车网络安全领域的技术领先者。 在亚马逊云科技初创团…

经典的设计模式——UML类图的一些规范

文章目录 一、类的表示二、接口的表示三、继承的表示四、接口实现的表示五、关联关系六、聚合关系七、合成关系八、依赖关系 一、类的表示 矩形框第一层表示名称,如果是抽象类,则用斜 体表示 第二层是属性 第三层是方法 号表示公有,-表示私有…

基于粒子群优化算法的电动汽车充放电V2G研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

chat聊天系统消息消费时遇到的问题及优化思路(二)

1、前言 考虑下面几个条件下如何提升kafka的消费速度 消息要求严格有序,如chat聊天消息业务处理速度慢,如处理一条数据需要100ms分片不合理,如有的分区很闲,有的分区消息数量积压 2、解决方案 1、顺序问题 关于消息消费时存在…