假设我在配置文件中有一个像这样的弹簧豆' A':
<bean id="foo" class="bar" />
然后,我有另一个配置文件&#39; B&#39; (在&#39; A&#39;之后加载),在其中,我有:
<bean id="foo" class="baz" />
我读过“B&B”中的豆子。 (使用类baz
)将覆盖&#39; A&#39;中的bean。但这很脆弱。但是,如果我将primary="true"
包含在&#39; B&#39; - 这是否意味着'B&#39; B&#39;总是会覆盖'A&#39; A&#39;因为它被定义为id="foo"
的主要bean?
答案 0 :(得分:4)
由于您正在加载具有相同ID的bean,因此该应用程序将只有一个bean(无论哪个加载了最后一个)。使用“主要”将没有任何效果。
当您使用相同类型加载多个bean并使用类型(而不是ID)搜索bean时,主标记会起作用。在这种情况下,如果您指定特定bean作为主要bean,则返回该bean。如果你没有指定任何bean作为主要bean,那么你会得到一个错误,说已找到多个具有相同类型的bean(即使使用单独的上下文文件加载bean)。