복붙노트

[SPRING] Spring .properties 파일 : 요소를 배열로 가져 오기

SPRING

Spring .properties 파일 : 요소를 배열로 가져 오기

다음과 같이 Spring을 사용하여 .properties 파일에서 속성 속성을로드하고 있습니다.

file: elements.properties
base.module.elementToSearch=1
base.module.elementToSearch=2
base.module.elementToSearch=3
base.module.elementToSearch=4
base.module.elementToSearch=5
base.module.elementToSearch=6

스프링 XML 파일

file: myapplication.xml
<bean id="some"
      class="com.some.Class">
      <property name="property" value="#{base.module.elementToSearch}" />
</bean>

그리고 내 Class.java

file: Class.java
public void setProperty(final List<Integer> elements){
    this.elements = elements;
}

하지만 디버깅 할 때 매개 변수 요소는 목록의 마지막 요소 만 가져 오므로 6 개의 요소가있는 목록 대신 값이 "6"인 요소가 하나 있습니다.

값을 # {base.module}로 추가하는 것과 같은 다른 접근법을 시도했지만 속성 파일에서 매개 변수를 찾지 못했습니다.

해결 방법은 elements.properties 파일에 쉼표로 구분 된 목록을 넣는 것입니다.

base.module.elementToSearch=1,2,3,4,5,6

문자열로 사용하고 구문 분석하지만 더 나은 솔루션이 있습니까?

해결법

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

    1.다음과 같이 속성 파일에 배열을 정의하면 :

    다음과 같이 속성 파일에 배열을 정의하면 :

    base.module.elementToSearch=1,2,3,4,5,6
    

    다음과 같이 Java 클래스에서 이러한 배열을로드 할 수 있습니다.

      @Value("${base.module.elementToSearch}")
      private String[] elementToSearch;
    
  2. ==============================

    2.다음은 Spring 4.0 이상에서 어떻게 할 수 있는지 보여주는 예입니다.

    다음은 Spring 4.0 이상에서 어떻게 할 수 있는지 보여주는 예입니다.

    some.key=yes,no,cancel
    
    @Autowire
    private Environment env;
    
    ...
    
    String[] springRocks = env.getProperty("some.key", String[].class);
    
  3. ==============================

    3.쉼표가 아닌 다른 구분 기호를 사용하면 해당 기호도 사용할 수 있습니다.

    쉼표가 아닌 다른 구분 기호를 사용하면 해당 기호도 사용할 수 있습니다.

    @Value("#{'${my.config.values}'.split(',')}")
    private String[] myValues;   // could also be a List<String>
    

    응용 프로그램 속성에서 가질 수있는

    my.config.values=value1, value2, value3
    
  4. from https://stackoverflow.com/questions/6212898/spring-properties-file-get-element-as-an-array by cc-by-sa and MIT license