-
(2023-12-26 TIL) @Configuration에 대하여TIL 2023. 12. 27. 10:27
- @Configuration이란?
- @Configuration을 사용하는 이유
- @Configuration의 사용 예
1. @Configuration이란?
@Configuration은 Spring에서 Java 기반의 설정 클래스를 정의할 때 사용됩니다. 이 어노테이션을 사용하면 해당 클래스가 애플리케이션의 구성(configuration)과 빈(bean)의 정의를 제공한다는 것을 나타냅니다. 이 클래스는 보통 XML 파일 대신에 Java 코드를 사용하여 애플리케이션의 설정을 정의할 때 주로 활용됩니다.
2. @Configuration을 사용하는 이유
- Java 기반 설정: @Configuration이 적용된 클래스는 Java 코드로 애플리케이션의 설정을 정의할 수 있습니다. 이는 XML같은 다른 형식의 외부 설정 파일 대신 설정을 관리하고자 할때 유용합니다.
- Bean 정의: @Configuration은 클래스 내에서 @Bean을 사용하여 Bean을 정의할 수 있도록 합니다. 이를 통해 Spring IoC컨테이너에 의해 관리되는 빈을 생성하고 구설할 수 있습니다.
- 조건부 Bean 생성: @Configuration은 조건에 따라 특정 Bean을 생성하거나 제외할 수 있는 조건부 Bean 생성을 가능하게 합니다. 이는 @ConditionalOnClass나 @ConditionalOnBean 같은 어노테이션 사용이 가능함을 말합니다.
3. @Configuration 사용 예
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @Configuration public class AppConfig { @Bean public MyService myService() { return new MyService(); } @Bean public DataSource dataSource() { // DataSource 빈을 생성하고 반환하는 코드 return new DataSource(); } // 조건부 빈 생성 예시 @Bean @ConditionalOnProperty(name = "feature.enabled", havingValue = "true") public FeatureService featureService() { return new FeatureService(); }
위의 예시에서 AppConfig 클래스는 @Configuration이 적용되어 있습니다.
이 클래스에서 myService와 dataSource라는 두 개의 Bean을 정의하고 있습니다.
이 Bean들은 @Configuration을 통해 IoC컨테이너에 의해 관리되며, 필요한 경우 다른 Bean들과의 의존성 주입이나 초기화 작업을 수행할 수 있습니다.
featureService는 @Configuration으로 조건부 Bean을 생성하는 예시입니다.
@ConditionalOnProperty를 사용하여 featureService Bean이 feature.enabled 속성이 true일 때만 생성하도록 설정했습니다.
만약 feature.enabled 속성이 false로 설정되어 있다면, featureService Bean은 생성되지 않습니다.
이를 통해 특정 조건이 충족될 때만 해당 Bean이 생성되도록 할 수 있습니다.
'TIL' 카테고리의 다른 글