2016-06-15 52 views
0

假設有像這樣的參數的任意數量的具有構造類:調用Java構造與Spring的XML參數的任意數量

public ClassA(URI ... uri){ 
    //contruct object 
} 

URI對象的數量,以傳遞到ClassA的構造函數可能取決於在配置文件中定義的值的數量(可以是一對多的URI)。

我應該如何在Spring XML中定義一個ClassA bean?

回答

1

使用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轉換器。

0

以下配置工作正常:

<beans> 
    <bean id="ClassA" class="ClassA"> 
     <constructor-arg ref="uri"/> 
    </bean> 

    <bean id="uri" class="URI"/> 
</beans> 
相關問題