development

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

big-blog 2020. 10. 11. 10:51
반응형

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


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

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

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


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

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

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

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

그리고 쉼표가 아닌 다른 구분 기호를 사용하는 경우에도 사용할 수 있습니다.

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

응용 프로그램 속성에서

my.config.values=value1, value2, value3

다음은 Spring 4.0 이상에서 수행 할 수있는 방법의 예입니다.

application.properties 함유량:

some.key=yes,no,cancel

자바 코드 :

@Autowire
private Environment env;

...

String[] springRocks = env.getProperty("some.key", String[].class);

참고 URL : https://stackoverflow.com/questions/6212898/spring-properties-file-get-element-as-an-array

반응형