스프링 부트는 다음과 같은 종류의 @Conditional 애너테이션과 Condition을 제공

스프링 부트의 자동 구성은 이 @Conditional을 이용

Conditions

Class Conditions

주의) @Bean 메서드에도 적용이 가능하지만 클래스레벨에 존재하지 않고 @Bean 메서드에만 적용하게 되면 클래스 레벨의 기술을 사용하지 않거나 해당하는 클래스를 구현하지 않은 경우 Bean Factory Method에의해서 만들어지는 오브젝트는 빈으로 등록이 안되는데 클래스 레벨에 조건을 아무것도 안붙인경우 Configuration 클래스 전체가 빈으로 등록되버림 → 기능에는 문제가 없을 테지만 불필요하기 때문에 클래스 레벨 사용을 우선시 해야 함

Bean Conditions

Property Conditions

@ConditionalOnProperty는 스프링의 환경 프로퍼티 정보를 이용함

지정된 프로퍼티가 존재하고 값이 false가 아니면 포함 대상이 됨

특정 값을 가진 경우를 확인하거나 프로퍼티가 존재하지 않을 때 조건을 만족하게 할 수 도 있음

Resource Conditions

@ConditionalOnResource는 지정된 리소스(파일)의 존재를 확인하는 조건

Web Application Conditions

웹 애플리케이션 여부를 확인함