在单个应用程序上下文中定义两个相同类的 bean

2023-12-21

如果我定义同一类的两个 bean 并且没有给出任何范围。那么将创建多少个类的实例。例如

在 applicationContext.xml 中

<bean name="testBean" class="com.test.Example"/>
<bean name="myBean" class="com.test.Example"/>

Spring将创建两个类型的beancom.test.Example并且自动装配将针对类型或方法名称(或限定符),请参阅春季国际奥委会 http://docs.spring.io/spring/docs/3.0.x/reference/beans.html#beans-factory-autowire

看这个简单的测试:

有了这堂课

public static class TestBean {
    static int INT = 1;
    public int test;
    public TestBean() {
        test = INT++;
    }


}

配置xml:

<bean name="testBean" class="com.test.TestBean"/>
<bean name="myBean" class="com.test.TestBean"/>

JUnit4与spring容器测试:

@Resource
TestBean testBean;

@Resource
TestBean myBean;

@Test
public void test() {

    assertNotNull(testBean);
    assertNotNull(myBean);
    assertFalse(testBean == myBean);
    assertFalse(testBean.test == myBean.test);
}

这个测试不会失败,正如您所看到的,创建了两个 TestBean 类型的 bean。

请参阅 Spring 文档中的这部分:

byName
按属性名称自动装配。 Spring 寻找与需要自动装配的属性同名的 bean。例如,如果一个 bean 定义设置为按名称自动装配,并且它包含一个 master 属性(即,它有一个 setMaster(..) 方法),Spring 会查找名为 master 的 bean 定义,并使用它来设置财产。

byType
如果容器中恰好存在一个属性类型的 bean,则允许自动装配该属性。如果存在多个,则会抛出致命异常,这表明您不能对该 bean 使用 byType 自动装配。如果没有匹配的 beans,则不会发生任何事情;该属性未设置。

构造函数
类似于 byType,但适用于构造函数参数。如果容器中不存在一个构造函数参数类型的 bean,则会引发致命错误。

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

在单个应用程序上下文中定义两个相同类的 bean 的相关文章

随机推荐

  • 如何在 Zend 框架的 ini 文件中编写路由链……的链?

    我正在尝试使用 Zend 框架的 INI 文件定义如下路由 http api example com servicename http api example com servicename 版本 users userid items it
  • 如何在没有后端的情况下保存用户输入

    我刚刚学习 JavaScript 和 Web 开发 我想知道我想做的事情是否可能 我想编写一个 JavaScript 测验来保存用户输入的答案 而不需要后端 这可能吗 如果不可能 我能做到这一点的最简单和最容易的方法是什么 谢谢 PS 如果
  • 如何将 X11 键符号映射到 Unicode 字符?

    X11 将键码映射到键符号 然后将键符号映射到 Unicode 在程序中检索键符号到 Unicode 映射的好方法是什么 Try this http www cl cam ac uk mgk25 ucs keysym2ucs c
  • 通用 git 重置为默认上游 HEAD

    是否有语法可以重置为当前分支的默认上游 HEAD 就像是 git checkout mybranch git reset hard origin mybranch where origin mybranch可以通用当前分支的上游 HEAD
  • Windows - 无法启动 Git:可能 Git 可执行文件的路径无效

    Can t start Git C Users Cloudion PC AppData Local GitHub PortableGit d93ee8917cfa9add886773e6be9ec08609a502b6 bin git ex
  • 是否有任何理由在 Maven 中为我自己的传递依赖项保留显式依赖项声明?

    我已经阅读了一段时间有关 Maven 中的显式依赖声明与传递 隐式 依赖声明的内容 大多数人倾向于同意您应该始终显式声明项目所依赖的库 主要是为了避免版本不匹配 这是完全合理的 但是我们应该如何解决我们的内部依赖性 如果可以通过传递机制解决
  • 在纯文本 div 中插入新行

    我正在使用一个 CMS 它只允许特定 div 中的文本 HTML 例如 br 被解析为 lt br gt 对于 Unicode HTML 代码 例如 amp 会产生 and x00040 会产生 但它似乎不允许换行 回车 我怎样才能把一个
  • PyBind11 析构函数未调用?

    我有一个c 类包裹着PyBind11 问题是 当Python脚本结束c destructor不会被自动调用 这会导致不整齐的退出 因为网络资源需要由析构函数释放 作为解决方法 有必要显式删除Python反对 但我不明白为什么 请有人解释一下
  • 文本环绕段落中居中的图像

    例如 text text text text text text text text text text text text text text text text text text text text text text text te
  • 用汇编语言将 2 个数字相加并打印结果

    我需要有关如何添加两个数字然后打印结果的帮助 这是我的代码 MODEL SMALL STACK 200H DATA NUM1 DB 12 NUM2 DB 3 VAL DB MSG1 DB The sum is CODE BEGIN PROC
  • 如何在执行之前打印每个命令? [复制]

    这个问题在这里已经有答案了 设置在执行之前打印每个命令的 Bash 脚本的最佳方法是什么 这对于调试目的来说非常有用 我已经尝试过这个 CMD my command params gt stdout txt 2 gt stderr txt
  • 更改vue路由器路由而不更改URL

    在我的前端中 我想将用户重定向到错误视图 以防初始化出错 为此 我准备了一个可以通过特定路径调用的特殊错误视图 为了改善用户体验 我不想将 url 替换为类似的内容 error 但我还是想利用vue router 您知道如何实现这一目标吗
  • 如何在预览中构建带有注释的 swiftui 类 mainactor

    所以 我有一个名为设置的类 我在所有地方都使用它 并且特别希望其他视图在内容更改时做出反应 我用 MainActor 注释了它 当运行应用程序时 一切正常 但是 在预览中我只是尝试创建一个实例 struct ContentView Prev
  • 如何在 stackNavigator 屏幕内水平滑动?

    我正在尝试在同一屏幕的不同屏幕之间创建滑动导航StackNavigator 当我设定swipeEnabled true in navigationOptions 我的应用程序宁愿在不同的选项卡之间导航 我宁愿想在同一个堆栈中导航Screen
  • 重新排列数据框中的行

    我在 R 中有一个数据框 如下所示 有两列 ID phone number Mark 866458 Paul 986564 Jack 987543 Mary 523422 我想要这种只有一列的输出 Mark 866458 Paul 9865
  • 在 for 循环和条件语句中添加到 scala 映射

    我收到一条错误消息 错误 类型参数 Any 不符合特征 Cloneable 的类型参数边界 A 具体来说 var M mutable Map Int mutable Set Int for i lt 1 to 100 j lt 1 to 1
  • knockout.js afterRender 是如何工作的?

    Knockout js 的 afterRender 的文档我不清楚 它的目的是什么以及我们如何使用它 主要的使用示例有哪些 昏死渲染后每次复制 foreach 块并将其插入到文档中时都会调用 无论是在 foreach 首次初始化时 还是在稍
  • Google 可视化图表未显示第一列

    我在使用 Google Visualization API 时遇到问题 图表中的某些数据未显示 该图表相当简单 有 4 列和两行 http savedbythegoog appspot com id ae0853b788af3292b554
  • “光标”选项是必需的,来自每个聚合的错误

    我从特定 NodeJS 应用程序的每个 mongoose 聚合中收到 The cursor option is required 错误 但在同一系统中 具有猫鼬聚合的其他应用程序运行良好 解决办法是什么 顺便说一句 相同的应用程序在其他系统
  • 在单个应用程序上下文中定义两个相同类的 bean

    如果我定义同一类的两个 bean 并且没有给出任何范围 那么将创建多少个类的实例 例如 在 applicationContext xml 中