Auto Configuration은 Spring Boot가 클래스패스, 정의한 빈, 프로퍼티 설정을 기반으로 필요한 빈을 자동으로 등록해주는 메커니즘이다. 개발자가 직접 설정 코드를 작성하지 않아도 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;
spring-boot-starter-web 의존성만 추가하면 내장 톰캣, DispatcherServlet, JSON 변환기 등이 자동 구성된다.

@SpringBootApplication에 포함되어 자동 설정을 활성화한다.
실제 자동 설정 클래스를 선택하고 로딩하는 핵심 클래스다.
주요 메서드 흐름:
getCandidateConfigurations() - 후보 설정 클래스 목록 로딩removeDuplicates() - 중복 제거getExclusions() - 제외 대상 확인filter() - @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
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.jpa.show-sql=true
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class MyApplication {
// ...
}
자동 설정보다 개발자가 정의한 빈이 우선 적용된다.
-debug 옵션으로 어떤 자동 설정이 적용되었는지 확인 가능Auto Configuration은 Spring Boot의 핵심 철학인 "설정보다 관습"을 실현하는 메커니즘이다. 조건부 어노테이션을 통해 상황에 맞는 빈을 자동 등록하며, 필요시 properties나 직접 빈 정의로 커스터마이징 가능하다. 실무에서는 대부분의 인프라 설정(DB, 웹, 시큐리티 등)을 자동화하여 개발 생산성을 크게 향상시킨다.