728x90

Spring Boot를 사용하면 별도의 설정 없이도 자동으로 Bean이 등록되고, 서버가 실행됩니다.

이 모든 마법의 중심에는 바로 AutoConfiguration이 있습니다.


AutoConfiguration이란?

 

AutoConfiguration은 classpath와 설정 정보를 기반으로 자동으로 Bean을 등록하는 기능입니다.

즉, 개발자가 일일이 설정하지 않아도 Spring Boot가 알아서 환경을 구성합니다.


시작점: @SpringBootApplication

AutoConfiguration의 시작은 @SpringBootApplication입니다.

이 어노테이션 내부에는 다음이 포함되어 있습니다:

  • @SpringBootConfiguration
  • @ComponentScan
  • @EnableAutoConfiguration

@EnableAutoConfiguration 내부 구조

@Import(AutoConfigurationImportSelector.class)

 

핵심은 AutoConfigurationImportSelector입니다.


 

AutoConfiguration 동작 흐름

AutoConfigurationImportSelector는 다음 과정을 통해 자동 설정을 수행합니다:

  1. 자동 설정 후보 목록 조회
  2. 중복 제거
  3. 제외 설정 적용
  4. 조건 기반 필터링
  5. 최종 Configuration Import

핵심 메서드 분석

1. 후보 설정 조회

getCandidateConfigurations()
  • Spring Boot 2: META-INF/spring.factories
  • Spring Boot 3: META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

 

2. 중복 제거

removeDuplicates()

 

3. 제외 설정 처리

getExclusions()
  • application.yml 또는 annotation exclude 설정 반영

 

4. 조건 필터링

 

AutoConfiguration은 조건 기반으로 동작합니다.

  • @ConditionalOnClass
  • @ConditionalOnBean
  • @ConditionalOnMissingBean
  • @ConditionalOnProperty

왜 AutoConfiguration이 중요한가?

  • 설정 코드 감소
  • 빠른 개발 속도
  • 표준화된 환경 구성

하지만 내부 동작을 이해하지 못하면 디버깅이 매우 어려워집니다.


실무에서 중요한 포인트

  • Bean override 문제 (@ConditionalOnMissingBean)
  • AutoConfiguration exclude 전략
  • Starter dependency 구조 이해
  • 디버깅 시 ConditionEvaluationReport 활용

마무리

AutoConfiguration은 단순 편의 기능이 아니라 Spring Boot의 핵심입니다.

 

👉 한 줄 정리
AutoConfiguration은 "조건 기반으로 자동으로 Bean을 구성하는 시스템"입니다.

728x90

'Spring' 카테고리의 다른 글

[Spring] AOP (Aspect Oriented Programming)  (0) 2024.08.28
[Spring] @Cacheable, @CachePut, @CacheEvict  (0) 2024.08.17

+ Recent posts