@EnableAutoConfiguration은 스프링 부트의 핵심 어노테이션 중 하나로, 애플리케이션 컨텍스트의 자동 구성을 활성화합니다.
일반적으로 @SpringBootApplication 어노테이션의 일부로 사용됩니다:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // @EnableAutoConfiguration을 포함
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
또는 직접 사용할 수 있습니다:
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
public class MyConfig {
// 구성 내용
}
@Conditional 어노테이션을 사용하여 각 자동 구성의 적용 조건을 확인합니다.특정 자동 구성을 제외하고 싶다면 @EnableAutoConfiguration의 exclude 또는 excludeName 속성을 사용할 수 있습니다:
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class MyConfiguration {
// 구성 내용
}
또는 properties 파일에서:
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
자신만의 자동 구성을 만들려면 다음 단계를 따릅니다:
@Configuration
@ConditionalOnClass(MyService.class)
public class MyAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public MyService myService() {
return new MyServiceImpl();
}
}
META-INF/spring.factories 파일에 자동 구성 클래스 등록:org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.MyAutoConfiguration
자동 구성 과정을 디버깅하려면 애플리케이션을 실행할 때 --debug 플래그를 사용하거나 application.properties에 다음을 추가합니다:
debug=true
이렇게 하면 어떤 자동 구성이 적용되었고 어떤 것이 적용되지 않았는지, 그 이유가 무엇인지 로그에서 확인할 수 있습니다.
@EnableAutoConfiguration: 스프링 부트의 자동 구성 메커니즘을 활성화합니다.@Configuration: 개발자가 직접 빈을 정의하고 구성하는 데 사용됩니다.두 어노테이션은 함께 사용되어 자동 구성과 사용자 정의 구성을 조합할 수 있게 해줍니다.
@EnableAutoConfiguration은 스프링 부트의 "convention over configuration" 철학을 구현하는 핵심 요소입니다. 이를 통해 개발자는 반복적인 설정 작업에서 벗어나 비즈니스 로직에 더 집중할 수 있습니다. 그러나 자동 구성의 내부 동작을 이해하고, 필요에 따라 커스터마이징할 수 있는 능력도 중요합니다.
@SpringBootApplication
@Configuration
@Conditional
@ConfigurationProperties
@Profile