spring默认作用域是否是单例?

2023-11-30

你能解释一下为什么Spring要为如下所示的bean配置创建两个对象吗,因为默认情况下spring的默认作用域是单例的?

Spring的配置在这里:

<bean id="customer" class="jp.ne.goo.beans.Customer"> 
    <property name="custno" value="100"></property>
    <property name="custName" value="rajasekhar"> </property>
</bean>
<bean id="customer2" class="jp.ne.goo.beans.Customer"> 
    <property name="custno" value="200"></property> 
    <property name="custName" value="siva"></property> 
</bean>

Spring的默认作用域is单例。只是你对单例的理解与 Spring 定义单例的方式不符。

如果你告诉Spring创建两个具有不同id和相同类的独立bean,那么你会得到两个独立的bean,每个bean都有单例范围。所有单例范围意味着当您引用具有相同 id 的内容时,您将获得相同的 bean 实例。

这是如何Spring 文档定义了单例范围:

仅管理单例 bean 的一个共享实例,并且对具有与该 bean 定义匹配的 id 或 id 的 bean 的所有请求都会导致 Spring 容器返回一个特定的 bean 实例。

单例范围意味着使用相同的 id 检索相同的 bean,仅此而已。测试没有两个 id 引用同一个类会妨碍将映射用作 bean,并且使用 BeanFactories 代理事物会变得复杂。 对于 Spring 来说,这将涉及大量工作而收效甚微。相反,它相信用户知道他们在做什么。

如果您希望在多个名称中保留 bean 的单例性,这是可行的。您可以让多个名称引用同一个 bean,这是通过使用alias:

在 bean 定义本身中,您可以通过使用 id 属性指定的最多一个名称和 name 属性中任意数量的其他名称的组合,为该 bean 提供多个名称。这些名称可以是同一个 bean 的等效别名,并且在某些情况下很有用,例如允许应用程序中的每个组件通过使用特定于该组件本身的 bean 名称来引用公共依赖项。

然而,指定实际定义 bean 的所有别名并不总是足够的。有时需要为其他地方定义的 bean 引入别名。这在大型系统中是常见的情况,其中配置分散在每个子系统中,每个子系统都有自己的一组对象定义。在基于 XML 的配置元数据中,您可以使用 元素来完成此操作。

因此,如果您在 bean 配置中添加名称:

<bean id="customer" name="customer2" 
    class="jp.ne.goo.beans.Customer">
</bean>

或者为其他地方定义的 bean 创建别名:

<alias name="customer" alias="customer2"/>

那么“customer”和“customer2”将引用同一个bean实例。

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

spring默认作用域是否是单例? 的相关文章

随机推荐

  • 括号可以使用任意标识符作为参数吗? C++

    例如 是 const int someInt 有效代码 如果是这样 该声明与 const int someInt 您可以在两边放置任意多个括号表达式而不改变含义 但你不能对类型做同样的事情 特别是 正如其他人指出的那样 代码中的括号将含义从
  • 在 R 中创建地形图

    我正在尝试创建一个脚本 该脚本将为给定的一组坐标生成二维地形或等高线图 我的目标类似于 contour volcano 但对于用户设置的任何位置 事实证明 这具有惊人的挑战性 我努力了 library elevatr library tid
  • 我可以使用 Order By 和 ToLower 对 DocumentDB 执行不区分大小写的字符串排序吗?

    我想按标题的字母顺序对 DocumentDB 集合中的记录进行排序 起初我认为这是有效的 SELECT c Title FROM c ORDER BY c Title 但正如预期的那样 这会将小写字母排在大写字母之后 我希望我的搜索不区分大
  • android:对话框或弹出窗口内的webview

    如何在对话框或弹出窗口中添加 Web 视图 我的网络视图保留 URL WebView loadurl 当视图添加到对话框内时 它仍然移动到浏览器 我去过android 在对话框中加载webview但没有例子说明如何做吗 谢谢 这是示例 Al
  • 适用于 Java 8 的 Tomcat 8 Maven 插件

    Is the tomcat7 maven plugin使用 tomcat 8 服务器和 java 8 我找不到任何tomcat8 maven plugin 是的你可以 In your pom xml 添加tomcat插件 您可以将其用于 T
  • 是否可以防止 TeamCity 中的构建链被中断?

    我在 TeamCity 7 1 3 中进行了以下设置 项目A 构建和部署 A 测试 A 快速 测试 A 慢速 测试 A 非常慢 项目B 构建和部署 B 测试 B 快速 测试 B 慢速 A 的所有测试都依赖于 构建和部署 A B 的所有测试都
  • printf C 中十六进制值的最后一个字节

    我有一个简单的问题 代码非常短 所以我只是将其发布在这里 include
  • 动态设置 ui-sref Angularjs 的值

    我搜索过类似的问题 但出现的问题似乎略有不同 我正在尝试动态更改链接的 ui sref 此链接指向向导表单的下一部分 下一部分取决于下拉列表中所做的选择 我只是想根据选择框中的某些选择来设置 ui sref 属性 我可以通过绑定到在进行选择
  • 如何防止gcc优化破坏rep movsb代码? [复制]

    这个问题在这里已经有答案了 我尝试使用以下命令创建我的 memcpy 代码rep movsb操作说明 当禁用优化时 它可以完美地适应任何尺寸 但是 当我启用优化时 它无法按预期工作 问题 如何防止gcc优化破坏rep movsb代码 我的代
  • 使用 Ruby 驱动程序的 MongoDB Group

    我正在尝试带回一个包含用于描述博客文章的计数的年 月组合列表 我们的想法是 它们将像这样显示 2010 年 1 月 1 篇文章 2009 年 12 月 2 个职位 我已经设法使用 MongoDB JS shell 让它工作 并且它以有用的格
  • PHP-PDO从数据库获取元数据

    我想从带有 朋友 表的数据库中获取元数据 id name 1 Herbert 2 LG 3 Levins 这是我试图获取数据的代码
  • 如何正确手动重新创建 sklearn (python) 逻辑回归 Predict_proba 结果以进行多重分类

    如果我运行 4 个类的基本逻辑回归 我可以获得 Predict proba 数组 如何使用系数和截距手动计算概率 获得与 Predict proba 生成的相同答案的确切步骤是什么 网上似乎有很多关于此的问题和一些建议 这些建议要么不完整
  • Android 中不显示选项菜单

    我有这个代码来创建菜单 Override public boolean onCreateOptionsMenu Menu menu super onCreateOptionsMenu menu MenuInflater inflater g
  • 风格化文本以针对不同语言使用不同字体?

    有没有一种方法可以对 HTML 页面上的文本进行样式化 以便它针对不同的语言自动使用不同的字体 我的网站使用英语和阿拉伯语 我想根据显示的语言使用不同的字体 假设我有这样的一段 上一句是阿拉伯语 但这一句是英语 我希望阿拉伯语句子用 X 字
  • 当 SimpleXML 解析带有特殊字符的 XML 时会发生什么?

    我正在尝试用我的最终输出来解决这个问题 XML 提要看起来像这样
  • UIView动画

    我正在尝试制作动画UIView这里 它看起来像一个矩形 我只想将其转换为我的坐标 那么 我怎样才能让它动起来呢 我试图找到一些教程 但没有成功 在iOS 4中 UIView块动画方法是最简单的 UIView animateWithDurat
  • 什么是 JSTL 强制 Jars

    我是新人 刚刚开始学习Java 来自jstltag 我对jstl了解很多 我使用IDE eclipse mars 通过添加一个简单的jsp页面来创建一个动态Web项目 然后将war导出到tomcat 7的webapps文件夹中 我对jstl
  • Leaflet - 如何查找现有标记并删除标记?

    我已经开始使用传单作为开源地图 http leaflet cloudmade com 以下 jQuery 代码将允许在单击地图时在地图上创建标记 map on click onMapClick function onMapClick e v
  • 向表单验证添加错误不起作用?

    根据有关表单验证的语义 UI 文档 我可以手动添加错误 添加错误 错误 给定数组错误 将错误添加到表单中 我想使用此功能 因为我通过 AJAX 提交表单 进行服务器端验证 然后想要显示结果 我尝试了以下代码 my form form add
  • spring默认作用域是否是单例?

    你能解释一下为什么Spring要为如下所示的bean配置创建两个对象吗 因为默认情况下spring的默认作用域是单例的 Spring的配置在这里