-
Condition - Bean 등록 여부를 조건부로 제어Spring/Framework 2024. 3. 25. 10:41
org.springframework.context.annotation.Condition 인터페이스
개요
org.springframework.context.annotation.Condition 인터페이스는 Spring 컨테이너에 컴포넌트(Bean) 등록 여부를 조건부로 제어하는 데 사용됩니다. 즉, 특정 조건이 충족될 때만 컴포넌트가 등록되도록 설정할 수 있습니다.
핵심 기능
- matches 메소드: 조건 충족 여부를 판단하는 메소드입니다.
- ConditionContext 객체: 컴포넌트 스캔 과정, 환경 정보 등을 제공합니다.
- ConditionOutcome 객체: 조건 판단 결과를 나타내는 객체입니다.
사용 방법
- Condition 인터페이스를 구현하는 클래스를 만듭니다.
- matches 메소드를 구현하여 조건 판단 로직을 작성합니다.
- @Conditional 어노테이션에 구현한 클래스를 지정하여 컴포넌트에 조건을 부여합니다.
활용 예시
- 특정 프로필(Profile) 활성화 시 컴포넌트 등록
- 운영 체제 또는 JVM 버전에 따라 컴포넌트 등록
- 특정 라이브러리가 존재할 때만 컴포넌트 등록
장점
- 코드의 모듈성 향상
- 환경에 맞는 유연한 컴포넌트 구성
- 불필요한 컴포넌트 등록 방지
참고 자료
- Spring Framework 6.1.4 API - Condition: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Condition.html
- @Conditional 이란? - L.O.K - 티스토리: https://lordofkangs.tistory.com/315
- @Conditional 대신 @Profile로 유연하게 Bean 등록하기 - Be an Overachiever - 티스토리: https://devs0n.tistory.com/64
추가 정보
- @Conditional 어노테이션 외에도 다양한 조건부 어노테이션이 존재합니다. (예: @ConditionalOnProperty, @ConditionalOnClass)
- 조건 판단 로직을 더욱 세분화하기 위해 Condition 인터페이스를 조합하여 사용할 수 있습니다.
'Spring > Framework' 카테고리의 다른 글
org.aspectj.runtime.internal.AroundClosure.ProceedingJoinPoint (0) 2024.03.29 AnnotatedTypeMetadata - 어노테이션 정보 추출 (0) 2024.03.25 Vritual Thread - Kakao tech meet (1) 2023.12.12 spring boot 3.2 - restclient & declarative http interface (2) 2023.12.03 Virtual Thread 알아보기 (1) 2023.11.29