当多个Spring Singleton实例同时访问时

2024-04-20

如果您在 Spring 配置中的单例范围内定义服务,那么如果多个用户尝试同时访问它(即作为依赖项注入到您的控制器中),会发生什么情况?它应该引起任何冲突吗?或者 IoC 容器将保留后面的调用直到第一个调用完成?如果是这样,它会降低大型应用程序的性能,这对我来说听起来不合适。有人能给我一个正确的答案吗?

顺便说一句,据我记得,如果不是单例,IoC 容器将根据请求数量池化一些实例。有人可以证实一下吗?


如果多个用户尝试同时访问它(即作为依赖项注入到控制器中),会发生什么?

一个单例 bean 可以同时被多次访问。这就是为什么它总是必须是线程安全的

它应该引起任何冲突吗?

仅当您未能使其线程安全时

或者 IoC 容器将保留后面的调用直到第一个调用完成?

不,那会很糟糕


顺便说一句,据我记得,如果不是单例,IoC 容器将根据请求数量池化一些实例。有人可以证实一下吗?

Spring有以下范围(请参阅 Bean 范围参考 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes):

  • 单例 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes-singleton(每个应用程序仅管理一个实例)
  • 原型 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes-prototype(每次注入一个新实例)
  • session http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes-session(每个 HTTP 会话一个实例,仅在 Spring MVC 中)
  • request http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes-request(每个 HTTP 请求一个实例,仅在 Spring MVC 中)
  • 全球会议 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes-global-session(每个全局 HTTP 会话一个实例,仅在基于 portlet 的 Spring MVC 中)

Also:

从 Spring 3.0 开始,线程作用域可用,但默认情况下未注册。有关更多信息,请参阅文档SimpleThreadScope http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/context/support/SimpleThreadScope.html.

你所描述的是一个对象池。在 Spring 中,它将作为 Prototype 范围内的实现FactoryBean http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-extension-factorybean。在内部它会使用像这样的库阿帕奇共享/池 http://commons.apache.org/pool/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当多个Spring Singleton实例同时访问时 的相关文章

随机推荐

  • 使用 PHP 创建 .jpg 文件的下载链接

    我想这应该很容易 我有一个分页图像库 每个图像下方都有一个小链接 上面写着 下载 Comp 这应该允许人们快速将 jpg 文件 带有 PHP 生成的水印 下载到他们的计算机上 现在 我知道我可以直接链接到 jpg 文件 但这需要用户在新窗口
  • 了解 UNIX 命令 xargs

    我对此很困惑 需要一些澄清 示例1 pgrep string xargs ps 示例2 find xargs grep whatever 从示例 1 中 我推测是这样的 搜索作为正在运行的进程名称的一部分的 字符串 并将所有匹配的进程 ID
  • Java 中 & 和 && 有什么区别?

    我一直以为 Java中的运算符用于验证其两个布尔操作数是否为true 以及 运算符用于对两个整数类型进行按位运算 最近我才知道 运算符也可用于验证其布尔操作数是否为true 唯一的区别是即使 LHS 操作数为 false 它也会检查 RHS
  • 如何避免 Entity Framework Core 中的循环导航属性?

    我有一个这样的表架构 CREATE TABLE Categories Id INT IDENTITY 1 1 Name varchar 100 CONSTRAINT PK Category Id PRIMARY KEY Id CREATE
  • iOS 自定义 UITextField 与出口初始化

    I need UITextField几乎没有定制 我创建了新的自定义类 CustomTextField 在IB中我创建了outlet对于我的每一个习惯UITextField 我运行代码 但自定义不起作用 为了进行检查 我在初始化过程中设置了
  • 应该如何构建plot_surface的数组?

    我试图了解如何构建用于plot surface 在Axes3d中 的数组 我尝试构建一个简单的表面来操作这些数组的数据 In 106 x Out 106 array 0 0 0 1 0 0 In 107 y Out 107 array 0
  • VBA 自动化 - 预填充组合盒

    我正在尝试通过 VBA 将数据从 Excel 预填充到本地 Intranet 网站 我已经能够将大部分数据预填充到网站 但我正在努力处理这个组合日期框 请参阅 HTML 代码 div class form group row div
  • 在 switch/case 语句中使用列表中的值作为 case

    我有一个 ArrayList 其中包含以下字符串 name age gender salary 有没有办法可以将 ArrayList 中的值用作 case 表达式 显而易见的答案是否定的 因为 case 表达式必须是常量表达式 但是 我想知
  • 谷歌标签管理器中的自定义事件触发器

    每次我创建自定义触发事件时 它都不会触发 谁能请教一下可能是什么原因 我创建了 gacustomevent 自定义触发器并将其命名为 gaevent 但该事件没有被触发 我想使用数据层中的事件来捕获值 有关如何解决问题的任何建议 从你的问题
  • 如何使着色器淡入某种颜色?

    这是我当前使用的着色器 它通过缓慢降低不透明度来淡化对象 我想褪成紫色 如何才能做到这一点 着色器 frag uniform sampler2D texture uniform float opacity void main vec4 pi
  • 使用 MultiSelect 具有自定义弹出编辑器的 Kendo Grid - 无法获取模型中的选定项目

    所以标题几乎说明了一切 我正在尝试将新的 MultiSelect 小部件合并到网格的自定义弹出编辑器模板中 我正在使用数据属性初始化方法并从远程数据源读取下拉选项 这一切都工作正常 但我无法将所选项目的值放入模型中 当我保存行时 数据数组将
  • 在 Access 中设置子窗体的记录源

    Dim newRS newRS SELECT DISTINCT Grp ID Group Name Group NPI FROM GROUP Forms loclistingfrm LocationListSubFrm RecordSour
  • ESAPI getValidInput 方法的使用

    我无法使用下面的 of 方法ESAPI class java lang String getValidInput java lang String context java lang String input java lang Strin
  • 使用 Javascript 以编程方式制作 Wave

    这是我目前拥有的http jsfiddle net 6GEfr http jsfiddle net 6GEfr 这可行 但我希望它像波浪一样 它应该看起来像真正的波浪 而不是 V 形 你如何逐渐做到这一点 var height 0 setI
  • Eclipse 在启动配置中使用错误的 Maven 依赖项

    我正在开发一个使用 Maven 进行依赖 构建 任何其他操作 项目生命周期管理或其他 的项目 并且我正在使用 Eclipse 进行开发和测试 该项目使用 Vert x 最新 我尝试使用 Hazelcast 进行一些集群管理 但我遇到了 Ha
  • 在什么类型的情况下汇编速度不够快,因此您需要直接的硬件/布尔逻辑解决方案?

    我已经开始通读装配艺术 https nostarch com assembly2 htm 其中有一个关于布尔逻辑的部分 其中指出 当然 使用 Pascal C 甚至汇编语言等语言指定编程问题的解决方案比使用布尔方程指定解决方案要容易得多 因
  • 具有动态嵌套组件的角度循环依赖性

    我在互联网上寻找解决方案 但无济于事 不同情况等 所以请原谅下面的代码转储 我遇到的问题与循环依赖有关 代码转储是为了提供上下文 旁注 我对 Angular 和 Typescript 相当陌生 这个概念 当然 我正在尝试构建一组嵌套组件 它
  • 克隆/拉取 git 存储库时出现致命读取错误

    我在我的系统上使用 Git for Windows git 版本 1 7 4 msysgit 0 并且大多数时候它都工作得很好 但是今天在大学 每当我尝试使用 Git 时 我都会遇到问题git clone or git pull or ge
  • 在新日期上调用 getTime 时,未定义不是函数

    当尝试运行它时 我得到 未定义不是一个函数 我缺少什么 function bench func var start new Date getTime for var i 0 i lt 10000 i func console log fun
  • 当多个Spring Singleton实例同时访问时

    如果您在 Spring 配置中的单例范围内定义服务 那么如果多个用户尝试同时访问它 即作为依赖项注入到您的控制器中 会发生什么情况 它应该引起任何冲突吗 或者 IoC 容器将保留后面的调用直到第一个调用完成 如果是这样 它会降低大型应用程序