当前位置: 首页 > 知识库问答 >
问题:

Spring xml文件中引用bean的范围冲突

曾弘扬
2023-03-14

我有一个定义为原型的bean作用域,它引用另一个作用域为singleton的bean。从spring文档中,我知道

单例

这将bean定义的范围限定为每个Spring IoC容器的一个实例(默认)。

原型

这将单个bean定义的范围限定为具有任意数量的对象实例。

下面是我的代码

<bean id="employee" class="com.sample.beans.Employee" scope="prototype">
    <property name="id" value="1"/>
    <property name="name" value="employee_1"/>
    <property name="department">
        <ref bean="department"/>
    </property>
</bean>
<bean id="department" class="com.sample.beans.Department" scope="singleton">
    <property name="id" value="1"/>
    <property name="name" value="hardware"/> 
</bean>

这是否意味着我在每次需要一个新的员工bean实例时强制Spring生成一个新的员工bean实例,并且部门bean在每个IOC容器中都是单个的。但是在内部,当员工调用部门bean时,它是创建了一个新的还是共享了之前创建的现有单例bean。

共有1个答案

林星阑
2023-03-14

它应该共享以前的bean部门

 类似资料:
  • 问题内容: 有人可以解释一下我一直只使用“原型”的Spring bean的作用域吗,但是还有其他参数可以代替吗? 我在说什么的例子 问题答案: 从Spring规范开始,支持五种类型的bean作用域: 1.单身人士(默认*) 每个Spring IoC容器将单个bean定义的作用域限定为单个对象实例。 2.原型 将单个bean定义的作用域限定为任意数量的对象实例。 3.要求 将单个bean定义的范围限

  • tl;dr注入servlet的CDIBean如何可能也在适当的范围内? 在oracle官方教程和一些书籍中,我们可以看到一些简单的示例,展示如何将CDIBean注入servlet。这非常简单,因为我们只需要使用@Inject注释并在bean中启用bean发现。xml。我不明白的是,注入servlet的@RequestScoped或@SessionScoped bean的作用域是否正确。servle

  • 我正在学习Spring,我学习了bean范围——它们的实际用例是什么,我无法得到任何帮助。请帮助我们在Spring中何时使用单例、原型、请求和会话范围。

  • 问题内容: 有人可以解释spring 注释的用法吗?我 以为 这与会话范围的Bean有关,但是我不太确定是什么。 在作用域的使用中,我使用了没有注解(或没有aop作用域代理)的会话作用域bean ,所以我真的确定如何正确使用它。 问题答案: spring文档的3.4.4.5节对此进行了很好的解释: (请注意,以下“ userPreferences” Bean定义不完整): 从上面的配置中可以明显看

  • 问题内容: 我看到该范围返回键和值的“副本”。有没有办法让该范围返回该商品的地址?例 http://play.golang.org/p/AFOGG9NGpx 这里“ field”没有被修改,因为range发送了field的副本,我是否必须使用index或是否有其他方法可以修改值? 谢谢阅读。 问题答案: 简短而直接的答案: 不,使用数组索引而不是值 因此,上面的代码变为:

  • 根据文档,scoped bean在每个 容器中只实例化一次。例如,我有一个单例作用域的<code>UserDetails<code>bean,它包含有关用户的信息<br> 在我的main()方法中: 输出将是 因为userDetails是一个单独的bean,所以< code>ud2的第二次检索将给出与ud1相同的结果。 现在这是我的问题: 对于我的Web应用程序,我在我的中有以下bean 第一个问