이 글의 내용은 SpringBoot의 @Conditional 주석이 무엇인지에 관한 것입니다. 그것을 사용하는 방법? 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
@Conditional Annotation의 일부 기능이 최근 프로젝트에서 사용되었는데, 이를 기록하기 위해 이 글을 썼습니다
@Conditional이 무엇인가요?
@Conditional 주석은 무엇인가요? 코드에 설정된 조건에 따라 서로 다른 Bean을 로드할 수 있습니다. 예를 들어 인터페이스에 두 개의 구현 클래스가 있는 경우 이 인터페이스를 Spring 관리에 넘겨주고 싶을 때 일반적으로 하나만 선택합니다. 구현 클래스 중 하나인 현재로서는 if-else를 사용할 수 없으므로 @Conditional 주석이 나타납니다.
어떻게 사용하나요?
SpringBoot에서 @Conditional 주석은 단독이 아니라 가족입니다. 여러 멤버와 사용 방법을 살펴보겠습니다.
@ConditionalOnBean
샘플 코드
@Bean @ConditionalOnBean(RedisConnectionFactory.class) public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>(); template.setConnectionFactory(connectionFactory); template.setKeySerializer(new StringRedisSerializer()); template.afterPropertiesSet(); return template; }
이 방법 @ConditionalOnBean 주석은 다음과 같습니다. 추가되었으며 주석의 속성은 RedisConnectionFactory입니다. 이는 Redis의 관련 구성 정보를 구성하면 RedisTemplate을 인스턴스화하여 작동하게 한다는 것입니다. Redis의 관련 구성을 구성하지 않으면 인스턴스화하지 않습니다(결국 존재하더라도). 구성이 없으면 인스턴스화는 오류를 보고합니다. )
그뿐만 아니라 다음과 같이 재생할 수도 있습니다.
빈 이름에 따라 @ConditionalOnMissingBean(이름 = “connectionFactory”) 또는 @ConditionalOnMissingBean(주석 = EnableSyjRateLimit.class) ) 주석에 따라 다른 멋진 작업을 수행할 수 있습니다
@ConditionalOnMissingBean
이것은 1보다 Missing이 하나 더 많은 것입니다. 이름에서 알 수 있듯이 존재하지 않는 특정 Bean을 인스턴스화한다는 의미는 무엇입니까? .@ConditionalOnClass (특정 클래스가 존재하는 경우에만 Bean이 인스턴스화됨)
@ConditionalOnMissingClass (특정 클래스가 존재하지 않는 경우에만 Bean이 인스턴스화됨)
@ConditionalOnProperty(prefix = " syj", name = "algorithm", hadValue = "token")
좀 더 복잡합니다. 즉, 구성 파일에 syj라는 접두사가 붙은 속성이 있는 경우 속성 이름은 알고리즘이고 그 다음에는 해당 속성이 value 클래스는 토큰인 경우에만 인스턴스화됩니다.
그리고 이 속성도 더 나은 속성을 가지고 있습니다.
@ConditionalOnProperty(prefix = “syj”, name = “algorithm”, hadValue = “counter”, matchIfMissing = true)
matchIfMissing은 모두 만족하지 않는 경우를 의미합니다. 이 속성 syj.algorithm이 counter@ConditionalOnJava(Java 애플리케이션인 경우)
@ConditionalOnWebApplication(웹 애플리케이션인 경우)
과 동일한지 여부에 관계없이 기본적으로 구현됩니다. @Conditional 식구들에 관해서는 아주 일부분만 얘기해 봤습니다
식구들이 아마 이 정도일 겁니다:
더 알고 싶은 어린이 신발은 이 패키지를 참고하세요
org.springframework.boot.autoconfigure.condition
위에서 많이 말씀하셨는데 아직도 만족스럽지 못해요
사실 왜 만족스럽지 못할까요? 예를 들어 SpringBoot를 사용하지 않은 경우 이를 사용자 정의하려고 합니다. 그럼 이번에는 무엇을 해야 할까요?
먼저 규칙 클래스를 맞춤설정하세요
public class MyCondition implements Condition { public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { //在这里写你的逻辑,比如说你想a>0时实例化类A,a<0时不实现 return a>0; } }
그런 다음 사용할 수 있습니다
@Bean @Conditional(MyCondition.class) public A a(){ return new A() }
위 내용은 SpringBoot의 @Conditional 주석은 무엇입니까? 그것을 사용하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
