2012-01-20 33 views
12

Tôi có một danh sách các số nguyên như 1, 2, 3, 4, 5, 6, 7, 8, 9, 10cách chèn một mảng int vào spring bean

Tôi muốn sử dụng nó như một số nguyên mảng trong POJO của tôi.

Tuy nhiên, tôi không muốn nó bên trong lớp học của tôi, nhưng muốn bên ngoài nó vào tập tin thuộc tính và sau đó tiêm nó trong xml của tôi như là một tài sản của lớp.

Cách thực hiện?

Cảm ơn bạn đã đọc!

Trả lời

5

Có một cách để đưa như thế này:

<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> 

Nhưng khi bạn đòi hỏi những giá trị này được đọc từ một tập tin thuộc tính, Icouldn't tìm cách đọc từ các tệp thuộc tính :-(

Nhưng tôi có một sửa chữa xấu cho nó. Thay đổi lớp học của bạn để một cái gì đó như thế này:

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); 
     } 
    } 

Viết trong xml như sau:

<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> 

Hope this helps.

+0

Tôi đã theo cách xấu xí của riêng mình! Dù sao cũng cảm ơn! – Nik

12

Tách các giá trị với dấu phẩy nên làm điều đó

nếu lớp học của bạn trông giống như

Class MyCLass 
{ 
    private Integer[] myIntArray; 

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

tập tin bối cảnh của bạn này nên có một cái gì đó như thế này:

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

nếu bạn muốn người dùng tệp thuộc tính:

<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> 

Trong bạn myProps.properties tập tin

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

Geez, bạn đã đợi 20 phút; có một số kiên nhẫn. –

+0

@Rifat: Bạn có thể vui lòng cập nhật câu trả lời của bạn với mã lớp học (setter về cơ bản) ... mà sẽ làm cho câu trả lời hoàn thành .. Tôi không thể sửa câu trả lời của bạn !! – Nik

+3

@Rifat: Điều này không hoạt động ... Tôi nhận được lỗi bên dưới: Gây ra bởi: org.springframework.beans.TypeMismatchException: Không thể chuyển đổi giá trị thuộc tính của loại 'java.lang.String' thành loại bắt buộc 'java.lang .Integer [] 'cho thuộc tính' myCodes '; ngoại lệ lồng nhau là java.lang.NumberFormatException: Đối với chuỗi đầu vào: "1000,2000,3000,4000,5000" – Nik

Các vấn đề liên quan