@ConditionalOnClass

Yuno·2024년 8월 18일
0

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() 빈을 생성하도록 함. 만약 해당 클래스가 클래스패스에 없다면, 이 빈은 생성되지 않음


📌 주요 활용 사례

  1. 라이브러리 의존성에 따른 설정
  • Spring Boot는 다양한 외부 라이브러리를 자동으로 구성하는 기능을 제공함. 예를 들어, H2 데이터베이스가 클래스패스에 있는 경우, 자동으로 H2에 대한 설정을 적용함. 이런 기능이 @ConditionalOnClass 를 통해 구현됨
  1. 다양한 데이터 소스 지원
  • 특정 데이터베이스 드라이버가 클래스패스에 존재할 때만 해당 데이터베이스와 관련된 빈을 활성화할 수 있음.
  1. 모듈화된 어플리케이션
  • 어플리케이션을 모듈화하고, 특정 모듈이 포함되었을 때만 추가적인 설정이나 빈을 활성화하고 싶을 때 유용함
profile
Hello World

0개의 댓글