복붙노트

[SPRING] 스프링 빈에 int 배열을 주입하는 법

SPRING

스프링 빈에 int 배열을 주입하는 법

1, 2, 3, 4, 5, 6, 7, 8, 9, 10 같은 정수 목록이 있습니다.

내 POJO 정수 배열로 사용하고 싶습니다.

그러나, 나는 내 수업 내에서 그것을 원하지 않지만, 그것을 속성 파일에 외부화하고 내 xml에 클래스의 속성으로 삽입하고 싶습니다.

그것을하는 방법?

읽어 주셔서 감사합니다!

해결법

  1. ==============================

    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>
    

    그러나 속성 파일에서이 값을 읽어야하므로 속성 파일에서 읽을 수있는 방법을 찾지 못했습니다 .-(

    그러나 나는 그것에 대한 추한 수정이있다. 수업을 다음과 같이 변경하십시오.

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

    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
    
  3. ==============================

    3.spring.xml에서 이와 비슷한 것을 가질 수있다.

    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>
    

    희망이 당신과 다른 사람도 도움이됩니다. 이것은 속성 파일을 사용하고 싶지 않을 때입니다.

  4. from https://stackoverflow.com/questions/8937743/how-to-inject-an-int-array-in-spring-bean by cc-by-sa and MIT license