나는 동적 속성 이름을 검색하여 값을 설정해야하는 인스턴스 변수가 있습니다.Spring SPEL을 사용하여 동적 속성 이름을 확인하는 방법은 무엇입니까?
Class Test {
@Value("#{T(java.lang.String).format('filter.%s.disable', getClass().getSimpleName())}")
private boolean disable;
}
disable
그렇지 않으면 true
filter.Test.disable = true
및 false
으로 평가해야합니다. 속성이 정의되지 않은 경우 기본값 인 false
을 설정하려고합니다. 일반적으로 다음 구문을 사용하여 수행되지만이 경우에는 확실하지 않습니다. @Value("${property:default}")
내가 오류를 받고 있어요 :
또한Caused by: java.lang.IllegalArgumentException: Invalid boolean value [filter.BeanExpressionContext.disable]
@Value("${'dcs.cloud.filter.'#{getClass().getSimpleName()}'.disable'}")
을 시도하고 아무 소용이
#
및
$
의 다른 조합.
SPEL doc은 다른 구문을 사용하는 표현식을 평가하는 데 쓸모없는 parser.parseExpression
호출을 보여 주지만 실제로는 아무도 수행하지 않습니다. 실제 예제 대신 단위 테스트에서 코드를 선택하는 것 같습니다.
나는 그것을했고, 환경을 주입하고 가치를 찾았다. a) 리팩토링은 그것을 깨뜨릴 것이기 때문에 b)는 서브 클래스에서 작동하지 않기 때문에 클래스 이름을 하드 코딩하고 싶지 않습니다. –