Spring Boot @AutoConfiguration 정리

Xylitol311·2026년 1월 12일

Back-end

목록 보기
5/14

핵심 개념

Auto Configuration은 Spring Boot가 클래스패스, 정의한 빈, 프로퍼티 설정을 기반으로 필요한 빈을 자동으로 등록해주는 메커니즘이다. 개발자가 직접 설정 코드를 작성하지 않아도 Spring Boot가 상황에 맞게 적절한 설정을 자동으로 구성한다.

장점

  • 설정 코드 최소화: XML이나 Java Config를 작성하지 않아도 된다
  • 빠른 개발: 기본 설정이 자동으로 적용되어 비즈니스 로직에 집중 가능
  • 관습적 설정(Convention over Configuration): Spring Boot의 규칙을 따르면 자동으로 동작
  • 유연한 커스터마이징: 필요시 자동 설정을 오버라이드하거나 제외 가능

실무 활용 예시

데이터베이스 자동 설정

클래스패스에 H2 의존성만 추가하면 DataSource, JdbcTemplate, EntityManager 등이 자동으로 빈으로 등록된다.

// build.gradle
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'com.h2database:h2'
}

// 별도 설정 없이 바로 사용 가능
@Autowired
private DataSource dataSource;

웹 MVC 자동 설정

spring-boot-starter-web 의존성만 추가하면 내장 톰캣, DispatcherServlet, JSON 변환기 등이 자동 구성된다.

동작 원리

핵심 컴포넌트

1. @EnableAutoConfiguration

@SpringBootApplication에 포함되어 자동 설정을 활성화한다.

2. AutoConfigurationImportSelector

실제 자동 설정 클래스를 선택하고 로딩하는 핵심 클래스다.

주요 메서드 흐름:

  1. getCandidateConfigurations() - 후보 설정 클래스 목록 로딩
  2. removeDuplicates() - 중복 제거
  3. getExclusions() - 제외 대상 확인
  4. filter() - @Conditional 조건 평가로 최종 필터링

3. @Conditional 어노테이션

특정 조건이 만족될 때만 설정이 적용되도록 제어한다.

@ConditionalOnClass(DataSource.class)  // DataSource 클래스가 있을 때만
@ConditionalOnMissingBean  // 해당 빈이 없을 때만
public class DataSourceAutoConfiguration {
    // ...
}

설정 파일 위치

Spring Boot 2.7 이전: META-INF/spring.factories
Spring Boot 3.0 이후: META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

커스터마이징 방법

1. application.properties로 제어

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.jpa.show-sql=true

2. 특정 자동 설정 제외

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class MyApplication {
    // ...
}

3. 직접 빈 등록으로 오버라이드

자동 설정보다 개발자가 정의한 빈이 우선 적용된다.

주의사항

  • 조건 평가 순서: @ConditionalOnMissingBean은 평가 시점에 따라 예상과 다르게 동작할 수 있다
  • 순환 참조: 자동 설정 클래스 간 의존성에 주의해야 한다
  • 디버깅: -debug 옵션으로 어떤 자동 설정이 적용되었는지 확인 가능
  • 성능: 불필요한 자동 설정은 제외해 애플리케이션 시작 시간을 단축할 수 있다

핵심 요약

Auto Configuration은 Spring Boot의 핵심 철학인 "설정보다 관습"을 실현하는 메커니즘이다. 조건부 어노테이션을 통해 상황에 맞는 빈을 자동 등록하며, 필요시 properties나 직접 빈 정의로 커스터마이징 가능하다. 실무에서는 대부분의 인프라 설정(DB, 웹, 시큐리티 등)을 자동화하여 개발 생산성을 크게 향상시킨다.

profile
문제에 도전하고 성장하는 백엔드 개발자입니다.

0개의 댓글