더북(TheBook)

이때 JdbcTemplateCondition을 통과할 때만 MyService 빈을 생성한다. 다시 말해 JdbcTemplate이 클래스패스에 있을 때만 MyService 빈을 생성한다. 그렇지 않으면 이 빈 선언은 무시된다.

여기서 보여 준 조건은 비교적 간단하지만, 스프링 부트는 조금 더 흥미로운 조건으로 조건 클래스를 정의하고 이를 스프링 부트 자동 구성을 만드는 구성 클래스에 적용한다. 스프링 부트는 몇 가지 특별한 조건 애너테이션을 정의하고, 이들을 구성 클래스에 사용하여 조건부 구성을 적용한다. 표 2-1은 스프링 부트가 제공하는 조건 애너테이션이다.

▼ 표 2-1 자동 구성에서 사용하는 조건 애너테이션

조건 애너테이션

구성을 적용하는 조건

@ConditionalOnBean

대상 빈을 구성함

@ConditionalOnMissingBean

대상 빈을 아직 구성하지 않음

@ConditionalOnClass

대상 클래스가 클래스패스에 있음

@ConditionalOnMissingClass

대상 클래스가 클래스패스에 없음

@ConditionalOnExpression

스프링 표현식 언어(SpEL)가 참(true)

@ConditionalOnJava

자바 버전이 특정 버전 또는 버전 범위에 맞음

@ConditionalOnJndi

JNDI  InitialContext가 사용 가능하고, 선택적으로 지정한 JNDI 위치가 있음

@ConditionalOnProperty

지정한 구성 프로퍼티가 기대하는 값을 가짐

@ConditionalOnResource

지정한 리소스가 클래스패스에 있음

@ConditionalOnWebApplication

애플리케이션이 웹 애플리케이션임

@ConditionalOnNotWebApplication

애플리케이션이 웹 애플리케이션이 아님

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.