source

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

manysource 2023. 2. 16. 22:05

@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", "자동접속 삭제")

주석은 속성 구성에 따라 조건부로 스프링빈을 작성하는 데 사용됩니다.질문에서 보여드린 사용법에서 빈은 다음 경우에만 생성됩니다.spring.social.auto-connection-views속성이 존재하며 다음 값이 있습니다.false이 말은, 이걸 위해서View생성할 콩을 설정할 필요가 있습니다.spring.social.auto-connection-viewsfalse 이외의 값을 가져야 합니다.

이 주석의 다른 용도는 스프링 부트코드 베이스 전체에서 많이 볼 수 있습니다.또 다른 예는 다음과 같습니다.

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

의 사용에 주의해 주세요.matchIfMissing이 경우,AmqpAdminbean이 생성됩니다.spring.rabbitmq.dynamic속성이 존재하며 다음 값이 있습니다.false 아니면 아예 존재하지도 않을 겁니다이것에 의해, 옵트인이라고 하는 질문의 예가 아니고, 빈의 작성이 옵트 아웃이 됩니다.

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

@Conditional OnProperty (@Configuration을 사용하는 TYPE 레벨)

오히려 그 반대입니다.환경(개발, 승인, 생산)에 속성이 설정되어 있고, 이 방법에 의한 참값일 경우, 이 방법을 실시하기 위한 전제조건을 실행할 수 있다.

환경 주석에서 속성이 설정되지 않은 경우 메서드의 실행을 막지 않습니다.

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