[SPRING] Spring Boot 애플리케이션의 @Value 주석이 달린 필드에 제약을가한다.
SPRINGSpring Boot 애플리케이션의 @Value 주석이 달린 필드에 제약을가한다.
@Value 주석이 달린 다음 필드에 기본값을 지정합니다.
@Value("${tolerance.percentage:25}")
private int tolerance;
이 코드는 해당 소품이 존재하는 경우 필드의 값을 시스템 특성 "tolerance.percentage"로 올바르게 초기화합니다. 존재하지 않으면 기본값은 25입니다.
하지만이 int 필드에 최소값과 최대 값을 적용하여 한 단계 더 나아가고 싶습니다. 전체 숫자로 백분율보다 작은 백분율을 나타내므로 Murphy의 법칙은 누군가 (아마 나)가 외부에서 속성을 잘못 구성 할 수 있음을 의미합니다. 응용 프로그램은 런타임에 이상한 것들을 시작했을 것이고, 이는 내가 좋아하는 것에 너무 늦은 것입니다. 응용 프로그램 시작시 속성이 "101"또는 "-1"로 설정된 경우 오류가 발생합니다. 혹시 @Value 주석에서 101로 기본값을 설정하려고하면 오류가 발생하기를 바라지 만,이 질문의 목적에는 중요하지 않습니다. 여기 내가 시도한 것이있다.
//@Min and @Max don't produce the intended behavior when combined with @Value
@Min(0)
@Max(100)
@Value("${tolerance.percentage:25}")
private int tolerance;
@Value가 알고있는 int 필드에 최소값과 최대 값을 적용 할 수 있습니까?
해결법
-
==============================
1.정규 유효성 검증 API 주석을 사용한 유효성 검증은 특정 상황에서만 작동합니다.
정규 유효성 검증 API 주석을 사용한 유효성 검증은 특정 상황에서만 작동합니다.
따라서 예상되는 속성을 포함하는 클래스를 만들고 @ConfigurationProperties와의 바인딩을 사용하려는 @Value 대신에 @Value를 사용하는 것이 좋습니다. (대신 @Range를 사용할 수도 있습니다).
@ConfigurationProperties(prefix="tolerance") public ToleranceProperties { @Range(min=1, max=100) private int percentage = 25; // Here be a getter/setter }
이것은 @Configuration 클래스에 결합되어 @ EnableConfigurationProperties (ToleranceProperties.class)를 추가하고 속성이 필요한 곳이면 어디서든 사용할 수 있습니다. 자세한 내용은 typesafe 구성 속성을 참조하십시오.
참고 : @Component로 선언 할 수도 있습니다.
from https://stackoverflow.com/questions/44007492/enforce-constraints-on-value-annotated-field-in-spring-boot-application by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 이클립스 롬복 주석은 컴파일되지 않았습니다 ... 왜? (0) | 2019.02.19 |
---|---|
[SPRING] Spring의 데이터베이스 중심 리소스 번들 (0) | 2019.02.19 |
[SPRING] 봄 mvc에서 래핑 된 예외 처리 (0) | 2019.02.19 |
[SPRING] JSONObject를 Java 객체로 변환하기 (0) | 2019.02.19 |
[SPRING] EntityManager는 persist를 사용하여 요소를 데이터베이스에 저장할 수 없습니다. (0) | 2019.02.19 |