Как ввести массив int в spring bean

У меня есть список целых чисел, таких как 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

Я хочу использовать его как целочисленный массив в моем POJO.

Тем не менее, я не хочу его внутри своего класса, но хочу его экртизовать в файл свойств, а затем вставить его в свой xml как свойство класса.

Как это сделать?

Спасибо за чтение!

Ответ 1

Есть способ сделать так:

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

Надеюсь, что это поможет.

Ответ 2

Обособление значений запятой должно сделать это

если ваш класс выглядит примерно так:

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