Spring Framework 와 Spring Boot 에서 제공하는 조건부 어노테이션 중 하나로, 특정 클래스가 클래스패스(classpath) 에 존재할 때만 해당 빈(bean) 정의가 활성화되도록 함. 이 어노테이션을 사용하면, 클래스패스에 특정 라이브러리나 클래스가 존재할 경우에만 특정 설정이나 기능이 적용되도록 할 수 있음.
@ConditionalOnClass
는 클래스패스에 지정된 클래스가 있을 경우에만 해당 빈을 등록함. 이를 통해, 특정 라이브러리가 존재하는 환경에서만 특정 기능이 동작하도록 할 수 있음.import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyConfiguration {
@Bean
@ConditionalOnClass(name = "com.example.SomeLibrary")
public MyService myService() {
return new MyService();
}
}
위 예시에서 @ConditionalOnClass(name = "com.example.SomeLibrary")
는 클래스패스에 "com.example.SomeLibrary"
클래스가 있을 때만 myService()
빈을 생성하도록 함. 만약 해당 클래스가 클래스패스에 없다면, 이 빈은 생성되지 않음
H2
데이터베이스가 클래스패스에 있는 경우, 자동으로 H2에 대한 설정을 적용함. 이런 기능이 @ConditionalOnClass
를 통해 구현됨