2014-05-12 122 views
0

我想注入一個類的列表。我想要一個類的列表,而不是對象。我如何注入一類對象,而不是對象本身

我的類看起來是這樣的:

public class CodeServiceImpl{ 

    private List<Class<?>> codeList; 

// getter and setter 

我的spring配置文件(我沒有使用說明,但XML)是

<bean id="myCodeServiceImpl" class = "net.croz.service.CodeServiceImpl"> 
     <property name="codeList"> 
      <list> 
       <ref bean="myAddress"/> 
       <ref bean="myCity"/> 
       <ref bean="myCountry"/> 
      </list> 
     </property> 
    </bean> 


    <bean id="myAddress" class="java.lang.Class" factory-method="forName"> 
      <constructor-arg value="net.croz.model.Address"/> 
     </bean> 

     <bean id="myCity" class="java.lang.Class" factory-method="forName"> 
      <constructor-arg value="net.croz.model.City"/> 
     </bean> 

     <bean id="myCountry" class="java.lang.Class" factory-method="forName"> 
      <constructor-arg value="net.croz.model.Country"/> 
     </bean> 

但沒有被填充列表的編碼表。它最終成爲一個空對象。感謝您的幫助。

+1

1)你如何獲得'CodeServiceImpl'實例? 2)你是否在其構造函數中訪問'codeList'? – Morfic

+0

哦,男孩,我覺得很愚蠢。你打了兩個小時我看不到的小惡魔。我只是使用構造函數。當然,如果你實際上沒有調用有問題的bean,Spring並不會注入它。再次,非常感謝。 – user3627600

回答

1

其實它的工作原理是是:

<bean class="com.my.proj.Foo"> 
     <constructor-arg value="java.lang.String, org.springframework.util.StringUtils, byte[]"/> 
</bean> 

其中Foo是:

public class Foo { 

    private final List<Class<?>> codeList; 

    public Foo(Class<?>... codeList) { 
     this.codeList = Arrays.asList(codeList); 
    } 

} 

ConversionService做的東西爲逗號分隔的字符串轉換爲Class<?>[]並試圖解決在每個類的自己使用BeanClassLoader

+0

是的,我犯了一個愚蠢的錯誤,只是創建一個類的實例,並期望它像一個我沒有實際調用該bean的bean而聲明的bean。 – user3627600

相關問題