2012-01-20 46 views
12

我有一個像1,2,3,4,5,6,7,8,9,10如何注入在彈簧豆int數組

我想用它作爲一個整數整數列表數組在我的POJO。

但是,我不希望它在我的類中,但想要將它外化到屬性文件中,然後將它作爲類的屬性注入到我的xml中。

怎麼辦?

感謝您的閱讀!

回答

5

有把這樣的方式:

<beans:bean id="myBean" class="MyClass"> 
    <beans:property name="myIntArray" > 
    <beans:list> 
     <beans:value>1</beans:value> 
     <beans:value>2</beans:value> 
     <beans:value>3</beans:value> 
    </beans:list> 
    </beans:property> 
</beans:bean> 

但是當你需要這些值從屬性文件讀取,Icouldn't找到一種方式來閱讀屬性文件:-(

但我有一個醜陋的修復它。類更改爲這樣的事情:

Class MyCLass 
    { 
     private Integer[] myIntArray; 
     private String[] myIntArrayStr; 

     public Integer[] getMyIntArray(){ 
      return this.myIntArray; 
     } 
     public void setMyIntArray(Integer[] intArray){ 
      this.myIntArray=intArray; 
     } 
     public void setMyIntArrayStr(String[] myIntArrayStr) { 
      this.myIntArrayStr = myIntArrayStr; 
      //we are going to read the values as a string array and set out integer array inside this setter 
      int i=0; 
      Integer[] myInts = new Integer[myIntArrayStr.length]; 
      for(String s: myIntArrayStr){ 
       myInts[i]=Integer.parseInt(s); 
       i++; 
      } 
      setMyIntArray(ints); 
     } 
    } 

寫在XML如下:

<beans:bean id="myBean" class="MyClass"> 
     <beans:property name="myIntArrayStr"> 
     <beans:value> 
     ${myvalues} <!-- this is gonna come from properties file as previously was --> 
     </beans:value> 
     </beans:property> 

    </beans:bean> 

希望這有助於。

+0

我自己跟着醜陋的方式!不管怎麼說,多謝拉! – Nik

12

分離該值以逗號如果你的類看起來是這樣的

Class MyCLass 
{ 
    private Integer[] myIntArray; 

    public Integer[] getMyIntArray(){ 
     return this.myIntArray; 
    } 
    public void setMyIntArray(Integer[] intArray){ 
     this.myIntArray=intArray; 
    } 
} 

你的環境文件,應該有這樣的事情應該去做

<bean id="myBean" class="MyClass"> 
    <property name="myIntArray" value="1,2,3,4,5"></property> 
</bean> 

,如果你想用戶屬性文件:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="classpath:myProps.properties"/> 
</bean> 
<bean id="myBean" class="MyClass"> 
    <property name="myIntArray" value="${myvalues}"></property> 
</bean> 

在你myProps.properties文件

myvalues=1,2,3,4,5 
+1

嘖嘖,你等了20分鐘;有一定的耐心。 –

+0

@Rifat:你能不能更新你的答案以及類別代碼(基本上是setter)......這將使答案完整..我無法編輯你的答案! – Nik

+3

@Rifat:這是行不通的......我得到下面的錯誤:引起:org.springframework.beans.TypeMismatchException:無法將類型'java.lang.String'的屬性值轉換爲所需的類型'java.lang .Integer []'屬性'myCodes';嵌套異常是java.lang.NumberFormatException:對於輸入字符串:「1000,2000,3000,4000,5000」 – Nik