嘗試使用Spring PropertyOverrideConfigurer或一些這樣的子類,以幫助 創建以下豆:春3.X PropertyOverrideConfigurer堅持使用一套,沒有構造器
public class Foo {
private final String name;
public Foo(String name) { this.name = name; }
public String getName() { return name; }
}
假設我的bean定義是一樣的東西
<bean id="foo" class="Foo">
<constructor-arg name="name" value="abc">
</bean>
我遞給春天有個文件foo.properties,在那裏找到一個入口 foo.name =「高清」
因此,Foo bean的默認名稱屬性是「abc」,我希望它被overriden爲「def」; 但是我不想讓我的Foo類掛掉一個明確的setName(String name)方法,因爲儘管Spring認爲我認爲這是軟件開發中的一個可怕的 想法。我希望Spring能夠將 覆蓋的值作爲「def」傳遞給Foo的構造函數, 稍後不會使用setName(「def」)調用Foo。
我還沒有得到這個工作,有沒有辦法?我有唯一的成功是 到
public void setName(String name) { this.name = name; }
添加方法Foo類,而這又我認爲這是一個可怕的想法,因爲它開闢 你的無心之副作用的後級。
有沒有希望?我可以在 之前的某處修改bean的定義嗎?Spring使用(錯誤的)「abc」名稱創建Foo?
[這裏](http://stackoverflow.com/questions/5544525/constructor-injection-with-value-provided-by-another-bean),你可以找到解決方案。這個對我有用。祝你好運。 – 2012-01-27 13:09:19