Spring Boot를 사용하면 별도의 설정 없이도 자동으로 Bean이 등록되고, 서버가 실행됩니다.
이 모든 마법의 중심에는 바로 AutoConfiguration이 있습니다.
AutoConfiguration이란?

AutoConfiguration은 classpath와 설정 정보를 기반으로 자동으로 Bean을 등록하는 기능입니다.
즉, 개발자가 일일이 설정하지 않아도 Spring Boot가 알아서 환경을 구성합니다.
시작점: @SpringBootApplication
AutoConfiguration의 시작은 @SpringBootApplication입니다.
이 어노테이션 내부에는 다음이 포함되어 있습니다:
- @SpringBootConfiguration
- @ComponentScan
- @EnableAutoConfiguration
@EnableAutoConfiguration 내부 구조
@Import(AutoConfigurationImportSelector.class)
핵심은 AutoConfigurationImportSelector입니다.
AutoConfiguration 동작 흐름
AutoConfigurationImportSelector는 다음 과정을 통해 자동 설정을 수행합니다:
- 자동 설정 후보 목록 조회
- 중복 제거
- 제외 설정 적용
- 조건 기반 필터링
- 최종 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을 구성하는 시스템"입니다.
'Spring' 카테고리의 다른 글
| [Spring] AOP (Aspect Oriented Programming) (0) | 2024.08.28 |
|---|---|
| [Spring] @Cacheable, @CachePut, @CacheEvict (0) | 2024.08.17 |

