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
로 설정되어 있거나 존재하지 않는다면, 해당 빈은 등록되지 않음
true
로 설정하면 속성이 없을 때 조건이 참으로 평가되어 빈이 등록됨. 기본값은 false
myapp.feature.enabled=true
일 때만 특정 기능을 활성화할 수 있음.