spring / / 2025. 10. 9. 20:11

[Spring Boot 번역] Auto-configuration

출처: 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을 사용하는 것을 선호한다면, excludeexcludeName도 사용할 수 있습니다.
마지막으로, 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 애노테이션을 사용하여 구성할 수 있습니다.


반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유