@ConditionalOnProperty

Yuno·2024년 8월 18일
0

Spring Framework 와 Spring Boot 에서 제공하는 조건부 어노테이션으로, 특정 속성(property) 의 존재 여부나 값에 따라 빈(bean)의 등록 여부를 결정함. 이 어노테이션은 어플리케이션의 외부 설정 파일(application.properties, application.yml 등) 이나 환경 변수에서 특정 설정이 활성화되었는지를 기준으로 빈을 활성화하거나 비활성화할 수 있음.


📌 주요 기능

  • 조건부 빈 등록 : @ConditionalOnProperty 는 지정된 속성이 특정 값으로 설정되었을 때만 빈을 등록함. 이를 통해 어플리케이션 설정에 따라 특정 기능이나 서비스를 유연하게 구성할 수 있음.
  • 설정 기반 제어 : 어플리케이션의 외부 설정이나 환경 변수에 따라 동작을 제어할 수 있으므로, 환경에 따라 다른 설정을 적용하거나 기능을 활성화/비활성화 할 수 있음.
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyConfiguration {
	
    @Bean
    @ConditionalOnProperty(name = "myapp.feature.enabled", havingValue = "true")
    public MyService myService() {
    	return new MyService();
    }
}

위 예시에서 @ConditionalOnProperty(name = "myapp.feature.enabled", havingValue = "true")application.properties 또는 application.yml 파일에 myapp.feature.enabled=true 로 설정되어 있을 때만 myService() 빈을 등록함. 만약 이 속성이 false 로 설정되어 있거나 존재하지 않는다면, 해당 빈은 등록되지 않음


👉 주요 옵션

  • name : 필수 속성으로, 조건에 사용할 속성 이름을 지정함. 배열 형태로 여러 속성을 지정할 수도 있음.
  • havingValue : 속성이 특정 값일 때만 조건이 참으로 평가됨. 이 값이 지정되지 않으면, 속성이 존재하기만 하면 조건이 참이 됨
  • matchIfMissing : 속성이 존재하지 않을 떄의 동작을 정의함. true 로 설정하면 속성이 없을 때 조건이 참으로 평가되어 빈이 등록됨. 기본값은 false

👉 사용 시나리오

  1. 기능 토글
  • 어플리케이션의 특정 기능을 설정 파일을 통해 켜고 끌 수 있음. 예를 들어, myapp.feature.enabled=true 일 때만 특정 기능을 활성화할 수 있음.
  1. 환경별 설정
  • 프로파일이나 환경 변수에 따라 다른 설정을 적용하거나, 특정 환경에서만 동작해야 하는 빈을 등록할 수 있음.
  1. 조건부 로깅 설정
  • 예를 들어, 디버그 로깅이나 추가적인 모니터링 기능을 설정 파일을 통해 조건부로 활성화할 수 있음
profile
Hello World

0개의 댓글