code

@ConditionalOnProperty 주석의 목적은 무엇입니까?

codestyles 2021. 1. 7. 08:01
반응형

@ConditionalOnProperty 주석의 목적은 무엇입니까?


방금 스프링 부트 구성을 수정하고

@ConditionalOnProperty(prefix = "spring.social.", value = "auto-connection-views") 

...에서 org.springframework.boot.autoconfigure.social.TwitterAutoConfiguration

@Bean(name = { "connect/twitterConnect", "connect/twitterConnected" })
@ConditionalOnProperty(prefix = "spring.social.", value = "auto-connection-views")
public View twitterConnectView() {
    return new GenericConnectionStatusView("twitter", "Twitter");
}

이 주석의 목적을 이해할 수 없습니다. 속성 값 (예 : "spring.social", "auto-connection-views")이 존재하는 경우에만 빈을 사용할 수 있다고 생각합니다.


어노테이션은 속성 구성에 따라 조건부로 Spring Bean을 생성하는 데 사용됩니다. 질문에 표시된 사용법에서 spring.social.auto-connection-views속성이 존재하고 다른 값이있는 경우에만 빈이 생성됩니다 false. 즉,이 ViewBean을 작성하려면 spring.social.auto-connection-views특성 을 설정해야하며 false 이외의 값을 가져야합니다.

Spring Boot 코드베이스 전체에서이 주석의 다양한 용도를 찾을 수 있습니다. 또 다른 예는 다음과 같습니다.

@ConditionalOnProperty(prefix = "spring.rabbitmq", name = "dynamic", matchIfMissing = true)
public AmqpAdmin amqpAdmin(CachingConnectionFactory connectionFactory) {
    return new RabbitAdmin(connectionFactory);
}

의 사용을합니다 matchIfMissing. 이 경우 속성이 존재하고 다른 값을 가지 거나 속성이 전혀 존재하지 않으면 AmqpAdmin빈이 생성됩니다 . 이것은 옵트 인 질문의 예제가 아닌 빈 옵트 아웃을 생성합니다.spring.rabbitmq.dynamicfalse


TYPE 수준에서이 속성을 사용하는 경우, 즉 @Configuration 클래스 중 하나에서 ...이 경우 주석은 기본 속성 파일에 대해 평가 / 검사됩니다. application.properties

@Configuration이있는 TYPE 수준의 @ConditionalOnProperty


오히려 그 반대입니다. 메소드 구현을위한 전제 조건, 속성이 환경 (개발, 승인, 생산)에 설정되어 있고 메소드로 참값이면 실행이 가능하다.

환경 주석에 속성이 설정되어 있지 않으면 메서드 실행이 차단되지 않습니다.

참조 URL : https://stackoverflow.com/questions/26394778/what-is-purpose-of-conditionalonproperty-annotation

반응형