当父Bean被定义为原型(prototype)时,子Bean会自动变成原型吗?

5
在Spring框架中,如果我有一个作用域为“prototype”的bean,并且它是另一个bean的父级,则子bean会自动变成原型吗?
例如:
<bean id="a" class="..." scope="prototype"/>
<bean id="b" class="..." parent="a"/>
什么是 b 的作用域?
5个回答

8

我认为它将是一个单例,因为这是默认范围。

其余的设置始终从定义中获取:依赖项、自动装配模式、依赖项检查、单例、作用域、延迟初始化。


最初我以为这是正确的,但现在经过测试后,我更新了答案。Spring文档是误导性的。 - kamoor

4

2

来自Spring参考文档:

3.6. Bean定义继承。其余的设置将总是从子定义中获取:依赖关系、自动装配模式、依赖性检查、单例、作用域、延迟初始化。

因此,t不会继承父级的作用域。


2
你不是自相矛盾吗?你在关于文档的引用中说作用域将从子级获取。这难道不意味着作用域不会继承吗?我感到困惑。 - kamoor
你是对的 - 实际上它意味着相反的意思 - 它不会被继承。 - Erik Schmiegelow
这个问题也在这个链接中有详细的解答:http://stackoverflow.com/questions/11532371/if-the-parent-object-is-not-singleton-the-childrens-are-singleton - Erik Schmiegelow

0

子 Bean 不会获取父级作用域。


0
在Spring官方文档中,子类型将继承父类的所有属性,属性子类定义将覆盖父类属性。
如果您没有指定范围,它将从父级继承。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接