다시 웹, 백엔드로/스프링
자동 구성 (Auto Configuration) - 2
EnoughTT
2023. 8. 24. 13:10
@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. 스프링부트 - 핵심 원리와 활용 (김영한)