2012-01-20 11 views
12

tengo una lista de números enteros como 1, 2, 3, 4, 5, 6, 7, 8, 9, 10cómo inyectar una matriz int en frijol resorte

Quiero utilizarlo como un número entero array en mi POJO.

Sin embargo, no lo quiero dentro de mi clase, pero quiero externalizarlo en el archivo de propiedades y luego insertarlo en mi xml como una propiedad de la clase.

¿Cómo hacerlo?

¡Gracias por leer!

Respuesta

5

Hay una manera de poner de esta manera:

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

Pero como necesite estos valores para ser leído de un archivo de propiedades, Icouldn't encontrar una manera de leer desde el archivo de propiedades :-(

Pero tengo una solución fea para ello. Cambiar su clase a algo como esto:

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

Escribir en el XML de la siguiente manera:

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

Espero que esto ayude.

+0

¡Seguí el camino feo por mi cuenta! ¡Gracias de todos modos! – Nik

12

que separa los valores con comas debe hacerlo

si su clase se ve algo como esto

Class MyCLass 
{ 
    private Integer[] myIntArray; 

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

Su archivo de contexto

debe tener algo como esto:

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

si quieres usuario un archivo de propiedades:

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

En que myProps.properties archivos

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

Caray, ha esperado 20 minutos; tener algo de paciencia –

+0

@Rifat: ¿Puedes actualizar tu respuesta con el código de clase también (setter básicamente) ... que completará la respuesta ... No puedo editar tu respuesta !! – Nik

+3

@Rifat: Esto no está funcionando ... Recibo el siguiente error: Causado por: org.springframework.beans.TypeMismatchException: Error al convertir el valor de propiedad de tipo 'java.lang.String' al tipo requerido 'java.lang .Integer [] 'para la propiedad' myCodes '; la excepción anidada es java.lang.NumberFormatException: para cadena de entrada: "1000,2000,3000,4000,5000" – Nik

Cuestiones relacionadas