gpt4 book ai didi

java - Spring bean 必须代表一个唯一的对象吗?

转载 作者:行者123 更新时间:2023-11-30 02:48:45 27 4
gpt4 key购买 nike

Spring bean 可以引用另一个 bean 吗?它似乎不起作用:

<bean id="player1" class="some.package.Player" />
<bean id="player2" ref="player1" />

如果可以的话,有用吗?到目前为止,我认为每个 bean 都必须代表一个唯一的对象,但我的脑海中浮现出一些想法:如果我有一个名为例如的 Singleton 类怎么办? Sun 有一个“public static Sun getInstance()”方法,我会让两个 bean 成为同一个对象?

<bean id="sun1" class="some.package.Sun" factory-method="getInstance" />
<bean id="sun2" class="some.package.Sun" factory-method="getInstance" />

最佳答案

看下面

<bean id="player1" class="some.package.Player" />

<bean id="player2" ref="player1" />

我认为您想用两个或多个名称引用同一个 bean。如果是这样,您可以将逗号分隔的列表或 ID 作为(别名概念)

<bean id="player1, player2" class="some.package.Player" />

现在您可以使用player1或player2引用该bean。

同样,

<bean id="sun1" class="some.package.Sun" factory-method="getInstance" /><bean id="sun2" class="some.package.Sun" factory-method="getInstance" />

可以替换为

<bean id="sun1, sun2" class="some.package.Sun" factory-method="getInstance" />

这允许您使用两个不同的 id 引用同一个 bean。

要了解别名何时有用,请引用 https://vladmihalcea.com/why-i-like-spring-bean-aliasing/ ,

Bean aliasing allows us to override already configured beans and tosubstitute them with a different object definition. This is mostuseful when the bean definitions are inherited from an externalresource, which is out of our control.

关于java - Spring bean 必须代表一个唯一的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39351622/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com