【发布时间】:2014-10-23 08:51:48
【问题描述】:
假设在你的 spring 上下文文件中你已经导入了一些你不能修改的上下文文件。
有没有办法设置导入的 bean 的属性? 我不想从导入的上下文文件中复制和粘贴 bean 定义并对其进行修改,因为这会在我的代码和外部库之间创建错误的依赖关系。
我只需要修改现有 bean 的一个属性。
理论上应该是可能的,因为我可以使用一个自定义类来接收 bean 以更新为依赖项并在 init 方法中修改其属性。
我想知道 Spring 中是否有标准语法可以做到这一点。
例如在 library-context.xml 中有以下 bean 定义:
<bean id="the.message" class="com.someco.SomeClass">
<property name="message" value="default message" />
</bean>
我将其作为外部依赖项导入,因此我无法修改此定义。
当然,我可以将这个定义复制并粘贴到我的上下文中并覆盖它。这对于像示例中非常简单的 bean 这样的 bean 来说是可以的。 问题是依赖关系通常要复杂得多,并且它们可以在不同版本的库中发生变化。
我想要的是设置 bean“the.message”的属性,忽略所有其他细节。
我正在考虑使用类似的东西:
<bean id="myproxy" class="com.myapp.Proxy" init-method="copyProperties">
<property name="proxied" value="the.message" />
<property name="message" value="my message" />
</bean>
这个“代理”只用于设置“the.message”的属性。
【问题讨论】:
-
好像不是同一个问题。我不想在运行时更改它。我只需要在我的上下文文件中设置一个属性。