출처: https://docs.spring.io/spring-boot/4.0-SNAPSHOT/reference/using/auto-configuration.html
중요
이 버전은 아직 개발 중이며 안정적인 것으로 간주되지 않습니다. 최신 안정 버전은 Spring Boot 3.5.6을 사용하세요!
Auto-configuration
목차
Spring Boot auto-configuration은 추가한 jar 의존성을 기반으로 Spring 애플리케이션을 자동으로 구성하려고 시도합니다.
예를 들어, HSQLDB가 클래스패스에 있고 데이터베이스 연결 빈을 수동으로 구성하지 않은 경우, Spring Boot는 인메모리 데이터베이스를 자동으로 구성합니다.
auto-configuration을 사용하려면 @Configuration 클래스 중 하나에 @EnableAutoConfiguration 또는 @SpringBootApplication 애노테이션을 추가해야 합니다.
Tip
@SpringBootApplication또는@EnableAutoConfiguration애노테이션은 하나만 추가해야 합니다.
일반적으로 주요@Configuration클래스에만 둘 중 하나를 추가하는 것을 권장합니다.
Gradually Replacing Auto-configuration
Auto-configuration은 비침투적입니다.
언제든지 자체 구성을 정의하여 auto-configuration의 특정 부분을 대체할 수 있습니다.
예를 들어, 자체 DataSource 빈을 추가하면 기본 임베디드 데이터베이스 지원이 물러납니다.
현재 적용되고 있는 auto-configuration이 무엇이고 그 이유를 알아야 하는 경우, --debug 스위치로 애플리케이션을 시작하세요.
이렇게 하면 선택된 핵심 로거에 대한 디버그 로그가 활성화되고 조건 보고서가 콘솔에 기록됩니다.
Disabling Specific Auto-configuration Classes
원하지 않는 특정 auto-configuration 클래스가 적용되고 있다는 것을 발견하면, 다음 예제와 같이 @SpringBootApplication의 exclude 속성을 사용하여 비활성화할 수 있습니다:
Java
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class MyApplication {
}
Kotlin
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration
@SpringBootApplication(exclude = [DataSourceAutoConfiguration::class])
class MyApplication
클래스가 클래스패스에 없는 경우, 애노테이션의 excludeName 속성을 사용하고 대신 정규화된 이름을 지정할 수 있습니다.@SpringBootApplication 대신 @EnableAutoConfiguration을 사용하는 것을 선호한다면, exclude와 excludeName도 사용할 수 있습니다.
마지막으로, spring.autoconfigure.exclude 프로퍼티를 사용하여 제외할 auto-configuration 클래스 목록을 제어할 수도 있습니다.
Tip
애노테이션 레벨과 프로퍼티를 사용하여 둘 다에서 제외를 정의할 수 있습니다.
Note
auto-configuration 클래스가public이라 하더라도, public API로 간주되는 클래스의 유일한 측면은 auto-configuration을 비활성화하는 데 사용할 수 있는 클래스의 이름입니다.
중첩된 구성 클래스나 빈 메서드와 같은 해당 클래스의 실제 내용은 내부 사용 전용이며 직접 사용하는 것을 권장하지 않습니다.
Auto-configuration Packages
Auto-configuration packages는 엔티티 및 Spring Data 리포지토리와 같은 것들을 스캔할 때 다양한 자동 구성 기능이 기본적으로 검색하는 패키지입니다.@EnableAutoConfiguration 애노테이션(직접적으로 또는 @SpringBootApplication에 존재함으로써)은 기본 auto-configuration 패키지를 결정합니다.
추가 패키지는 @AutoConfigurationPackage 애노테이션을 사용하여 구성할 수 있습니다.
