다시 웹, 백엔드로/스프링

자동 구성 (Auto Configuration) - 2

EnoughTT 2023. 8. 24. 13:10

@Contitional

특정 상황일 때만 특정 빈들을 등록해서 사용하도록 도와주는 기능
스프링 부트 자동 구성에서 자주 사용됨

 

Condition

  • matches() 메서드 : true ➡️ 동작 o / false ➡️ 동작 x
  • ConditionContext : 스프링 컨테이너, 환경 정보
  • AnnotatedTypeMetadata : 어노테이션 메타 정보

 

Condition 인터페이스를 구현해 자바시스템 속성이 'memory=on' 이라고 되어 있을때 메모리기능이 동작 하도록 구현

 

MemoryCondition

"on" 일 경우 true 반환

MemoryCondition

 

MemoryConfig

@Conditional 어노테이션 추가 (MemoryCondition.class 부터 먼저 체크함)

MemoryConfig

 

인텔리제이 VM 속성 설정

-Dmemory=on / -D 꼭 붙여줘야함

 

확인

 

 

@Conditional 다양한 기능

  • @ConditionalOn ~
    • 스프링은 @Conditional 과관련해서 개발자가 편리하게 사용할수 있도록 수 많은 @ConditionalOn ~  를 제공함
      • @ConditionalOnClass , @ConditionalOnMissingClass : 클래스가 있는 경우
      • @ConditionalOnBean , @ConditionalOnMissingBean : 빈이 등록되어 있는 경우
      • @ConditionalOnProperty : 환경정보가 있는 경우
      • @ConditionalOnResource : 리소스가 있는 경우
      • @ConditionalOnWebApplication , @ConditionalOnNotWebApplication : 웹애플리케이션인 경우
      • @ConditionalOnExpression : SpEL 표현식에 만족하는 경우

 

@Condition 자체는 스프링 프레임워크의 기능, 확장해서 스프링 부트에서는 @ConditionalOn ~ 제공

 

 

 

 

 

 

 

 

 

feat. 스프링부트 - 핵심 원리와 활용 (김영한)