[英]Inject values in list property dynamically in spring
在Spring中,我想動態地在list屬性中注入值。 可能嗎?
對於例如,不存在三次指定值1,是否存在可以基於某個值多次重復該值的屬性。
<bean id='myBean' class-"com.foo.Xyz">
<property name="myList">
<value>1</value>
<value>1</value>
<value>1</value>
</property>
</bean>
如果問題不明確,請告訴我。
自定義FactoryBean
怎么FactoryBean
?
public class RepeatingListFactoryBean implements FactoryBean<Object> {
private final Object item;
private final int count;
public RepeatingListFactoryBean(Object item, int count) {
this.item = item;
this.count = count;
}
@Override
public Object getObject() throws Exception
{
final ArrayList<Object> list = new ArrayList<Object>(count);
for(int i = 0; i < count; ++i)
list.add(item);
return list;
}
@Override
public Class<?> getObjectType() {
return item.getClass();
}
@Override
public boolean isSingleton() {
return true;
}
}
您可以通過以下方式使用它(但我還沒有測試過):
<bean id="listFactory" class="RepeatingListFactoryBean">
<constructor-arg value="1"/> <!-- item -->
<constructor-arg value="3"/> <!-- count -->
</bean>
<bean id="myBean" class-"com.foo.Xyz">
<property name="myList" ref="listFactory"/>
</bean>
請注意,count和要重復的對象都是聲明性可配置的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.