【发布时间】:2009-06-05 15:55:45
【问题描述】:
可以说,我的 Spring 应用程序上下文中有很多看起来像这样的东西
<bean name="foo.0001" class="com.example.MyClass">
<property name="name" value="foo.name.0001"/>
<property name="zap">
<bean class="com.example.Other">
<property name="name" value="foo.name.0001"/>
</bean>
</property>
<property name="bar">
<bean class="com.example.NextOther">
<property name="name" value="foo.name.0001"/>
</bean>
</property>
</bean>
所以字符串 foo.name.0001 多次出现在 bean 定义中。因为它是一个更大的系统,有几个这样的配置块,修改这些ID中的每个是很烦人的。理想情况下,我只想在一个块内设置一次。是否有可能设置某种只存在于 bean 定义的本地范围内的属性?
【问题讨论】:
-
您到底想达到什么目的?如果子 bean 中的名称值与父 bean 中的名称相同,那么以某种方式引用父 bean 不是更好吗?
-
我只是想消除必须再次指定这些名称的冗余。因为如果我复制整个块,在这种情况下,我必须将这些事件中的每一个更改 3 次,但我只想调整一次。问题是,在过去配置应用程序时,我遇到了复制和粘贴错误,因为在某些情况下我忘记更改定义中的名称,这可能会导致非常细微的错误。
-
好的,但是这些名称相同的根本原因是什么?如果是这样,您是否可以不使用引用而不必多次指定它们?
-
这是我的问题,我唯一需要的是引用的范围仅在定义的 bean 内,因为如果引用的名称不同,则在第一名。