2016-06-02 4 views
0

application.properties :목록을 @Value로 삽입하는 방법은 무엇입니까?

@Value("${my.list}") 
List<Integer> list; 

나는이 작업을 위해 다음과 같은 콩이 등록하는 것을 발견 그물에 :

my.list=1,2,3,4 

가 나는 @Value 필드에 List으로이 주입 할 :

@Bean 
public ConversionService conversionService() { 
    return new DefaultConversionService(); 
} 

결과 :

org.springframework.beans.TypeMismatchException: Failed to convert value of type [java.lang.String] to required type [java.util.List]; 
Caused by: java.lang.NumberFormatException: For input string: "1,2,3,4" 

어떻게 든 spring은 (는) 이것을 목록으로 분석하려고 시도하지 않습니다. 왜?

sp30을 @Value("#{'${my.list}'.split(',')}")과 함께 사용하는 것이 가능하다는 것을 알고 있습니다. 그러나 나는 분명히 대화 할 필요가없는 해결책을 찾고 있습니다.

+0

스프링 부트를 사용하고 있습니까? –

+0

예'spring-boot'를 사용합니다. 1.3.5 – membersound

+0

시도해 보셨습니까? http://stackoverflow.com/questions/12576156/reading-a-list-from-properties-file-and-load-with-spring-annotation-value –

답변

-1

스프링이 setList (String)와 같은 setter를 찾고 있는데, 그렇지 않으면 값을 변환하려고 시도합니다. 당신은 세트리스트를 작성하여 그것을 해결할 수 있습니다 (문자열 [] 인수) 방식 마녀 인수의 각 요소를 분석 한 다음 목록 나는 봄이 비공개 경우에도 같은 세터에 액세스하지만, 공공 처음으로 시도 할 수 있다고 생각

setList(String[] arg){ 
    if (arg == null){ 
     this.list = new ArrayList<>(); 
    } else { 
     this.list = new ArrayList<>(arg.length); 
     for (String s : arg){ 
      this.list.add(Integer.parse(s)); 
     } 
    } 
} 

을 설정 그런 다음 가시성을 낮추십시오.

+1

Spring은'@ Value' 주석 필드를 삽입하기 위해 setter가 필요하지 않습니다. –

+0

값 (속성의 경우 문자열)을 필드 유형 (목록 )으로 변환 할 수없는 경우 – dtortola

관련 문제