[SPRING] 스프링 부트 조건부 조건부 표현식 다중 특성 점검
SPRING스프링 부트 조건부 조건부 표현식 다중 특성 점검
Spring Expression Language를 사용하여 2 개의 부울 속성이 참인지 확인하려면 어떻게합니까?
예를 들어, 단일 속성이 참인지 확인하는 구문은 다음과 같습니다.
@ConditionalOnExpression("${property.from.properties.file}")
property1 == true && property2 == false를 확인하기위한 구문은 무엇입니까? 속성에는 잠재적으로 다른 값이있을 수 있습니다.
비슷한 질문에 대한 답 : @ConditionalOnProperty 또는 @ConditionalOnExpression을 사용하는 동안 두 조건을 검사하는 방법은 두 문자열을 연결하고 다음과 같은 검사를 수행합니다.
@ConditionalOnExpression("'${com.property1}${com.property2}'=='value1value2'")
이 구문은 코드를 읽는 사람에게 혼란스러워 보이며 해킹 된 솔루션처럼 보입니다. 값을 연결하지 않고 두 개의 개별 속성을 검사하는 적절한 방법을 찾고 싶습니다.
또한 명확한 대답은 내가 본 것에서 쉽게 찾을 수있는 것이 아닙니다. 그것은 정말 간단한 대답 일 것 같지만 그것은 꽤 어렵다는 것을 증명하고 있습니다.
해결법
-
==============================
1.주석 @ConditionalOnProperty 및 @ConditionalOnExpression은 모두 java.lang.annotation.Repeatable 주석을 가지고 있지 않으므로 여러 속성을 검사하기 위해 여러 주석을 추가 할 수 없습니다.
주석 @ConditionalOnProperty 및 @ConditionalOnExpression은 모두 java.lang.annotation.Repeatable 주석을 가지고 있지 않으므로 여러 속성을 검사하기 위해 여러 주석을 추가 할 수 없습니다.
다음 구문을 테스트하고 작동합니다.
두 가지 속성에 대한 솔루션
@ConditionalOnExpression("${properties.first.property.enable:true} && ${properties.second.property.startServer:false}")
다음 사항에 유의하십시오.
다른 값을 가지며 여러 속성으로 확장 할 수있는 여러 속성을 허용합니다.
두 개 이상의 값을 확인하고 가독성을 유지하려면 평가중인 여러 조건간에 연결 연산자를 사용할 수 있습니다.
2 개 이상의 속성에 대한 솔루션
@ConditionalOnExpression("${properties.first.property.enable:true} " + "&& ${properties.second.property.enable:true} " + "&& ${properties.third.property.enable:true}")
단점은 @ConditionalOnProperty 주석을 사용할 때와 마찬가지로 matchIfMissing 인수를 사용할 수 없으므로 모든 프로파일 / 환경에 대해 .properties 또는 YAML 파일에 속성이 있는지 확인해야하거나 기본값
-
==============================
2.내가 기억하기로는, 다음과 같은 표현을 사용할 수 있습니다.
내가 기억하기로는, 다음과 같은 표현을 사용할 수 있습니다.
@ConditionalOnExpression("'${com.property1}'.equals('${com.property2}')")
더 읽을 거리 여기 링크가 있습니다
그것이 도움이된다면, 제발 혼란스러워 질 수 있도록 의견을 말하십시오.
from https://stackoverflow.com/questions/40477251/spring-boot-spel-conditionalonexpression-check-multiple-properties by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 4 정적 리소스로드 (0) | 2019.01.04 |
---|---|
[SPRING] 사용자 정의 제약 검사기에서 Autowired Repository가 Null입니다. (0) | 2019.01.04 |
[SPRING] org.hibernate.PropertyAccessException의 원인 : setter 내부에서 예외가 발생했습니다. (0) | 2019.01.04 |
[SPRING] 로그인 페이지에 사용자 이름과 비밀번호를 제외한 다른 필드가있는 경우 Spring 보안을 구현하는 방법은 무엇입니까? (0) | 2019.01.04 |
[SPRING] JSR303 사용자 정의 유효성 검사기가 두 번 호출 됨 (0) | 2019.01.04 |