首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在spring bean定义之外设置spring bean中的属性

在spring bean定义之外设置spring bean中的属性
EN

Stack Overflow用户
提问于 2009-12-30 15:59:55
回答 4查看 4.1K关注 0票数 4

我有一个定义在我控制之外的spring bean。我想在spring bean中设置一个属性,在spring XML中可以做到吗?

例如a.xml (不受我控制):

代码语言:javascript
复制
<bean id="a" class="A"/>
<bean id="b" class="B">
    <constructor-arg ref="a"/>
</bean>

b.xml (由我控制)

代码语言:javascript
复制
<import resource="classpath:META-INF/a.xml"/>
<bean id="c" class="C"/>
<!-- here i want to set a property in bean a -->

一种选择,但我不喜欢它是编程设置属性。我在java中使用了Spring2.5。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-30 21:32:24

您可以将bean-a注入到另一个类中,并在其中设置其属性

代码语言:javascript
复制
<bean id="foo" class="...MySetterClass" init-method="init">
    <property name="candidateBean" ref="a"/>
    <property name="candidateProperty" value="bar"/>
</bean>

所以你的类MySetterClass可以做类似这样的事情

代码语言:javascript
复制
class MySetterClass {
    /*... Setter boilerplate */
    public void init(){
        candidateBean.setCandidateProperty(candidateProperty);
    }
}

这是一个相当丑陋的方法,但它应该是可行的。

票数 3
EN

Stack Overflow用户

发布于 2009-12-30 16:06:14

您可以在弹簧配置中定义该属性。

代码语言:javascript
复制
<bean id="myBean"class="myClass">
  <property name="myProperty">
  </property>
</bean>

带有same name can be configured和最后一个bean的bean将获胜(可能是第一个,我对此不太确定)。如果您以将您的定义加载为最后一个定义的方式对配置xml文件进行排序,那么它将重新定义bean。

票数 3
EN

Stack Overflow用户

发布于 2010-01-04 07:39:54

在不了解更多的情况下:

您可以使提供的bean成为另一个bean的父bean,并在第二个bean中注入属性值。然后,使用您创建的bean,而不是提供的bean。

代码语言:javascript
复制
<bean id="myNewBean" parent="suppliedBean">
    <property key="prop" value="foo"/>
</bean>

如果有引用第一个bean的其他bean需要您注入的属性值,或者有代码按名称查找此bean,那么这将不起作用。同样,根据您的事务和aop配置,在某些情况下,这不是您想要的。但是,如果您需要为自己的代码在普通的旧bean上注入一个属性,这应该是可以的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1978992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档