如何在spring bean中注入一个int数组

时间:2012-01-20 06:50:32

标签: spring

我有一个整数列表,如1,2,3,4,5,6,7,8,9,10

我想在我的POJO中将它用作整数数组。

但是,我不希望它在我的类中,但是想要将它外部化到属性文件中,然后将它作为类的属性注入我的xml中。

怎么做?

感谢阅读!

3 个答案:

答案 0 :(得分: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 :(得分: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>

但是当你需要从属性文件中读取这些值时,我找不到从属性文件中读取的方法: - (

但我有一个丑陋的解决方案。将您的课程改为:

    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 :(得分:0)

在你的spring.xml中,你可以得到类似的东西。

<bean id="mybean" class="package.name">
        <property name="myIntArray">
            <list value-type="int">
                <value>1</value>
                <value>2</value>
                <value>3</value>
            </list>
        </property>
    </bean>

希望这对你和其他人也有帮助。 这是当你不想使用属性文件时。