복붙노트

[SPRING] ConditionalOnExpression 평가 중에 PropertySource를 사용할 수 없음

SPRING

ConditionalOnExpression 평가 중에 PropertySource를 사용할 수 없음

속성에 따라 인스턴스화 할 다음과 같은 구성 요소 클래스가 있습니다.

@Component("componentA")
@PropertySource("classpath:components.properties")
@ConditionalOnExpression("'${components.enabled}'.contains('componentA')")
public class ComponentA implements ComponentIF {
...

components.properties 파일에는 다음과 같은 특성이 있습니다.

components.enabled=componentA,componentB,componentD

@PropertySource ( "classpath : components.properties")는 @ConditionalOnExpression ( " '$ {components.enabled}'. contains ( 'componentA')") 평가 중에는 사용할 수없는 것 같습니다.

반면, spring-boot의 application.properties 파일 안에 components.enabled = componentA, componentB, componentD 속성을 넣으면 ConditionalOnExpression 평가 중에 속성을 사용할 수있게되고 예상대로 작동합니다.

그러나 동일한 구성 요소의 모든 속성을 동일한 위치에 유지하려면 components.properties를 사용하고 싶습니다.

PropertySource가 ConditionalOnExpression 중에 효과적이지 않다는 아이디어가 있습니까?

해결법

  1. ==============================

    1.나는 또한 같은 문제가 있었다. 필자의 경우, 조건에 따라 특정 측면을 사용하고자했습니다. 봄은 초기화 초기 단계에서 일부 값을 읽는 것으로 보이며이 값을 무시하는 것은 어렵습니다. (@ConditionalOnExpression과 같은 값).

    나는 또한 같은 문제가 있었다. 필자의 경우, 조건에 따라 특정 측면을 사용하고자했습니다. 봄은 초기화 초기 단계에서 일부 값을 읽는 것으로 보이며이 값을 무시하는 것은 어렵습니다. (@ConditionalOnExpression과 같은 값).

    이 변수들의 값을 설정하기 위해서.

    다른 경우 속성 파일 자체를 사용하여 속성을 재정의하려면이 답변을 진행하는 것이 좋습니다.

    이것들은 모두 함께 결합 될 수 있습니다. 그들의 우선 순위에 대해 알고 싶다면 이것을 참조하십시오.

  2. from https://stackoverflow.com/questions/34987333/propertysource-not-available-during-conditionalonexpression-evaluation by cc-by-sa and MIT license