2012-01-20 16 views
12

mam listę liczb jak 1, 2, 3, 4, 5, 6, 7, 8, 9, 10jak wstrzyknięcia int tablicę w sprężyny fasoli

że chcemy wykorzystać jako całkowita tablica w moim POJO.

Jednak nie chcę tego wewnątrz mojej klasy, ale chcę przekazać go do pliku właściwości, a następnie wstrzyknąć go do mojego xml jako właściwość klasy.

Jak to zrobić?

Dzięki za przeczytanie!

Odpowiedz

5

Istnieje sposób, aby umieścić tak:

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

Ale jak wymagają te wartości mają być odczytane z pliku właściwości, Icouldn't znajdź sposób na odczytanie z pliku właściwości :-(

Ale mam na to brzydką poprawkę. Zmień swoją klasę do czegoś takiego:

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

pisać w xml następująco:

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

nadzieję, że to pomaga.

+0

Sam podążałem tą brzydką drogą! W każdym razie dzięki! – Nik

12

rozdzielając wartości przecinkiem powinien to zrobić

jeśli klasa wyglądać tak

Class MyCLass 
{ 
    private Integer[] myIntArray; 

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

plik kontekstowego powinien mieć coś takiego:

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

jeśli chcesz użytkownik pliku właściwości:

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

W Tobie myProps.properties plików

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

Geez, czekałeś 20 minut; masz trochę cierpliwości. –

+0

@Rifat: Czy możesz zaktualizować swoją odpowiedź również z kodem klasy (w zasadzie podstawiając) ... to sprawi, że odpowiedź będzie kompletna ... Nie mogę edytować odpowiedzi! – Nik

+3

@Rifat: To nie działa ... Otrzymuję następujący błąd: Powodowany przez: org.springframework.beans.TypeMismatchException: Nie można przekonwertować wartości właściwości typu 'java.lang.String' na wymagany typ 'java.lang .Integer [] "dla właściwości" myCodes "; Zagnieżdżony wyjątek to java.lang.NumberFormatException: Dla ciągu wejściowego: "1000,2000,3000,4000,5000" – Nik

Powiązane problemy