假設有像這樣的參數的任意數量的具有構造類:調用Java構造與Spring的XML參數的任意數量
public ClassA(URI ... uri){
//contruct object
}
URI對象的數量,以傳遞到ClassA的構造函數可能取決於在配置文件中定義的值的數量(可以是一對多的URI)。
我應該如何在Spring XML中定義一個ClassA bean?
假設有像這樣的參數的任意數量的具有構造類:調用Java構造與Spring的XML參數的任意數量
public ClassA(URI ... uri){
//contruct object
}
URI對象的數量,以傳遞到ClassA的構造函數可能取決於在配置文件中定義的值的數量(可以是一對多的URI)。
我應該如何在Spring XML中定義一個ClassA bean?
使用FactoryBean接口:
public interface FactoryBean<T> {
T getObject() throws Exception;
Class<T> getObjectType();
boolean isSingleton();
}
基本上定義該類型的豆的。事情是這樣的:
<bean id="classA" class="ClassAFactoryBean"/>
然後:
public class ClassAFactoryBean implements FactoryBean<ClassA> {
@Value("${uris}")
URI[] uris;
ClassA getObject() throws Exception {
return new ClassA(uris);
}
Class<T> getObjectType() {
return ClassA.class;
}
boolean isSingleton() {
return true;
}
}
您可能需要注入「的URI」屬性字符串,然後轉換如果沒有Spring提供轉換器。或者掛鉤你自己的URI轉換器。
以下配置工作正常:
<beans>
<bean id="ClassA" class="ClassA">
<constructor-arg ref="uri"/>
</bean>
<bean id="uri" class="URI"/>
</beans>