programing

스프링 부트 - @ConditionalOnProperty 또는 @ConditionalOnExpression

newnotes 2023. 3. 6. 21:26
반응형

스프링 부트 - @ConditionalOnProperty 또는 @ConditionalOnExpression

Spring-Boot-1.1.7을 사용하고 있습니다.type string 속성의 값에 따라 빈을 컨텍스트에 추가하는 것이 목적입니다.

다음과 같은 부울 값의 예를 많이 볼 수 있습니다.

@ConditionalOnExpression("${xxx.enabled:true}")

그러나 다음과 같은 속성 값을 기반으로 하는 식을 원합니다.

@ConditionalOnExpression("${server.host==localhost} or ${server.port==8080} ")

아니면 그런 비슷한 것.

누가 어떻게 하는지 보여줄 수 있어요?

결국, 이것은 나에게 효과가 있었다.

@ConditionalOnExpression("'${server.host}'=='localhost'")

조건부로 사용한 속성 값:

@ConditionalOnProperty(name="server.host", havingValue="localhost")

비교할 값이 리터럴인 경우 따옴표로 묶어야 합니다. 그러면 플레이스홀더가 (전체 식이 아닌) 속성 이름을 둘러쌉니다.${server.host}=='localhost'

예를 들어 문자열 값을 사용하고 있고 이 설정되어 있는지 확인하려면 간단한 "체크"를 사용할 수 있습니다.

@Component
@ConditionalOnProperty(value = "foo.value")
public class Foo {
    private String value;
    // getter/ setter and other stuff ...
}

추가할 경우:foo.value: bar고객님께application.ymlfile 컴포넌트가 검색되어 응용 프로그램 컨텍스트에 추가되지만 값을 설정하지 않으면 컴포넌트가 추가되지 않습니다.

컴포넌트가 발견되었는지 여부를 확인하려면 다음을 사용합니다.debug: true당신의 안에서application.yml.

Foo matched:
- @ConditionalOnProperty (foo.value) matched (OnPropertyCondition)

Foo: Did not match:
- @ConditionalOnProperty (foo.value) did not find property 'foo.value' (OnPropertyCondition)

언급URL : https://stackoverflow.com/questions/26451321/spring-boot-conditionalonproperty-or-conditionalonexpression

반응형