조건부 빈
스프링 4.0부터 @Conditional 어노테이션으로 조건이 참일 때만 빈이 생성시킬 수 있다.
1 2 3 4 5 6 | @Bean @Conditional(MagicExistCondition.class) public MagicBean magicBean () { return new MagicBean(); } | cs |
위 소스에서는 환경 프로퍼티 중 MagicExistCondition.class 가 true를 반환 할 때 MagicBean이 생성된다.
1 2 3 4 | public interface Condition { boolean matches (ConditionContext ctxt, AnnotatedTypeMetadata metadata); } | cs |
@Conditional에 지정된 클래스는 Condition 인터페이스를 구현하며, matches() 반환값이 true일 때 @Conditional로 어노테이션된 빈이 생성된다.
1 2 3 4 5 6 7 8 | public class MagicExistCondition implements Condition { public boolean matches (ConditionContext ctxt, AnnotatedTypeMetadata metadata) { Environment env = context.getEnvironment(); return env.containsProperty("magic"); ← magic 프로퍼티 체크 } } | cs |
위에서부터 종합해보면, MagicBean은 MagicExistCondition 클래스를 통해 magic 프로퍼티가 존재할 때 빈 생성이 된다.
|
이 포스트는 스프링 인 액션을 읽고 개인적으로 필요하다고 생각되는 내용을 정리한 포스트입니다. 일부 내용, 소스코드는 스프링 인 액션의 내용일 수 있습니다. |
반응형
'🌱 SPRING > 스프링 인 액션' 카테고리의 다른 글
포인트 커트를 이용한 조인 포인트 선택 (0) | 2018.05.26 |
---|---|
AOP란? (0) | 2018.05.24 |
XML로 빈 와이어링하기 (0) | 2018.05.07 |
자바로 빈 와이어링하기 (0) | 2018.05.07 |
빈 와이어링 - 자동 와이어링 (0) | 2018.05.07 |