2016-12-28 1 views
0

값이 application.properties 파일에 "10MB"로 정의 된 "myconfig.defaultSize"구성 매개 변수가 있습니다.스프링 구성 파일의 값을 사전 처리하는 방법은 무엇입니까?

반면에 @ConfigurationProperties 주석을 가진 @Component 클래스는 이러한 구성 매개 변수를 다음과 같이 매핑합니다.

@Component 
@ConfigurationProperties(prefix="myconfig") 
public class StorageServiceProperties { 
    private Long defaultSize; 
    //...getters and setters 
} 

그렇다면 String 값을 Long으로 변환하는 방법을 어떻게 적용 할 수 있습니까?

답변

1

이러한 일반 변환기를 속성 대 속성별로 적용 할 수 없습니다. String에서 Long으로 변환기를 등록 할 수는 있지만 모든 경우에 대해 호출됩니다 (기본적으로 Long 유형의 모든 특성).

@ConfigurationProperties의 목적은 Environment을 상위 레벨 데이터 구조로 매핑하는 것입니다. 아마도 거기에서 할 수 있을까요?

@ConfigurationProperties(prefix="myconfig") 
public class StorageServiceProperties { 
    private String defaultSize; 
    // getters and setters 

    public Long determineDefaultSizeInBytes() { 
     // parsing logic 
    } 

} 

당신이 봄 부팅에서 멀티 지원을 보면, 우리 keep the String value and we use the @ConfigurationProperties object는 구문 분석을 담당하는 MultipartConfigElement를 만듭니다. 그렇게하면 코드 및 구성에서 이러한 특수 값을 지정할 수 있습니다.

-1
public void setDefaultSize(String defaultSize) { 
    try { 
    this.defaultSize = Long.valueOf(defaultSize); 
    } catch (NumberFormatException e) { 
    // handle the exception however you like 
    } 
} 
관련 문제