@Contitional
특정 상황일 때만 특정 빈들을 등록해서 사용하도록 도와주는 기능
스프링 부트 자동 구성에서 자주 사용됨
- matches() 메서드 : true ➡️ 동작 o / false ➡️ 동작 x
- ConditionContext : 스프링 컨테이너, 환경 정보
- AnnotatedTypeMetadata : 어노테이션 메타 정보
Condition 인터페이스를 구현해 자바시스템 속성이 'memory=on' 이라고 되어 있을때 메모리기능이 동작 하도록 구현
MemoryCondition
"on" 일 경우 true 반환
MemoryConfig
@Conditional 어노테이션 추가 (MemoryCondition.class 부터 먼저 체크함)
인텔리제이 VM 속성 설정
-Dmemory=on / -D 꼭 붙여줘야함
확인
@Conditional 다양한 기능
- @ConditionalOn ~
- 스프링은 @Conditional 과관련해서 개발자가 편리하게 사용할수 있도록 수 많은 @ConditionalOn ~ 를 제공함
- @ConditionalOnClass , @ConditionalOnMissingClass : 클래스가 있는 경우
- @ConditionalOnBean , @ConditionalOnMissingBean : 빈이 등록되어 있는 경우
- @ConditionalOnProperty : 환경정보가 있는 경우
- @ConditionalOnResource : 리소스가 있는 경우
- @ConditionalOnWebApplication , @ConditionalOnNotWebApplication : 웹애플리케이션인 경우
- @ConditionalOnExpression : SpEL 표현식에 만족하는 경우
- 스프링은 @Conditional 과관련해서 개발자가 편리하게 사용할수 있도록 수 많은 @ConditionalOn ~ 를 제공함
@Condition 자체는 스프링 프레임워크의 기능, 확장해서 스프링 부트에서는 @ConditionalOn ~ 제공
feat. 스프링부트 - 핵심 원리와 활용 (김영한)
'다시 웹, 백엔드로 > 스프링' 카테고리의 다른 글
순수 라이브러리 사용 (0) | 2023.08.30 |
---|---|
순수 라이브러리 만들기 (0) | 2023.08.30 |
자동 구성 (Auto Configuration) - 1 (0) | 2023.08.23 |
스프링 부트 스타터와 라이브러리 관리 (0) | 2023.08.18 |
스프링 부트와 내장 톰캣 - 2 (0) | 2023.08.17 |