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

标签 java spring

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 to substitute them with a different object definition. This is most useful when the bean definitions are inherited from an external resource, which is out of our control.

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

相关文章:

java - Spring 多个数据源不读取某些应用程序属性

java - 使用上下文菜单捕获 HWND

java - 通过反射绕过 Java 模块化

java - ANDROID 请求方向 API 时请求被拒绝

Spring JPA - 删除子元素不会反射(reflect)在数据库表中

java - 登录时 NTLM Spring 安全异常

java - 收到错误 "java.lang.IllegalStateException: Can print only from an activity"?

java - 登录tomcat不起作用

java - 使用 JSR-308 验证列表的 Hibernate 验证属性路径

spring - 在 Spring 和 SPeL 中使用 @Value 注释