假设您在spring上下文文件中导入了一些无法修改的上下文文件。
有没有办法设置导入的bean的属性? 我不想从导入的上下文文件中复制和粘贴bean定义并修改它,因为这会在我的代码和外部库之间产生错误的依赖关系。
我只需要修改现有bean的一个属性。
理论上应该可以使用自定义类来接收bean作为依赖项进行更新并在init-method中修改其属性。
我想知道Spring中是否有标准语法来执行此操作。
例如,在library-context.xml中,有以下bean定义:
<bean id="the.message" class="com.someco.SomeClass">
<property name="message" value="default message" />
</bean>
我将其作为外部依赖项导入,因此我无法修改此定义。
当然,我可以在我的上下文中复制并粘贴此定义并覆盖它。对于像示例中的bean那样非常简单的bean就可以了。 问题在于,依赖关系通常要复杂得多,而且可以在库的不同版本中进行更改。
我想要的是设置bean的属性&#34; the.message&#34;忽略所有其他细节。
我正在考虑使用类似的东西:
<bean id="myproxy" class="com.myapp.Proxy" init-method="copyProperties">
<property name="proxied" value="the.message" />
<property name="message" value="my message" />
</bean>
这个&#34;代理&#34;仅用于设置&#34; the.message&#34;。
的属性答案 0 :(得分:0)
要做你想做的事,SomeClass
需要有一个setter。您可以像往常一样注入bean并使用该setter。使用注释会更容易,但也可以使用XML。
但是,请确保您意识到这样做会全局更改bean的值。如果有任何东西依赖于原始值,那将不再存在。
答案 1 :(得分:0)
我相信这可以在导入上下文文件中使用breakpoint
来完成。
使用示例中的导入定义:
org.springframework.beans.factory.config.MethodInvokingFactoryBean
可以在导入上下文文件中设置
消息,如下所示:
<bean id="the.message" class="com.someco.SomeClass">