Auto-configuration tự động configure bean dựa trên dependency có trong classpath — không cần khai báo thủ công.
Cơ chế:
1. @EnableAutoConfiguration kích hoạt scanning META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (Spring Boot 3) hoặc spring.factories (Boot 2).
2. Mỗi entry là một @Configuration class có @Conditional guards:
@AutoConfiguration
@ConditionalOnClass(DataSource.class) // chỉ nếu driver có trên classpath
@ConditionalOnMissingBean(DataSource.class) // chỉ nếu user chưa tự định nghĩa
public class DataSourceAutoConfiguration { ... }3. Nếu condition pass → bean được tạo. Nếu user tự define bean → @ConditionalOnMissingBean block auto-config.
Debug: thêm --debug flag hoặc debug=true → Spring in auto-config report ra console (pass/fail condition từng class).
Tự viết auto-config: tạo file META-INF/spring/...AutoConfiguration.imports, khai báo config class với @ConditionalOn* phù hợp.
Auto-configuration automatically configures beans based on dependencies on the classpath — no manual declaration needed.
Mechanism:
1. @EnableAutoConfiguration triggers scanning of META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (Spring Boot 3) or spring.factories (Boot 2).
2. Each entry is a @Configuration class guarded by @Conditional checks:
@AutoConfiguration
@ConditionalOnClass(DataSource.class) // only if the driver is on the classpath
@ConditionalOnMissingBean(DataSource.class) // only if the user has not defined one
public class DataSourceAutoConfiguration { ... }3. If conditions pass → bean is created. If the user defines the bean → @ConditionalOnMissingBean blocks auto-config.
Debugging: add --debug flag or debug=true → Spring prints an auto-config report to the console (pass/fail per class).
Writing your own auto-config: create META-INF/spring/...AutoConfiguration.imports, declare a config class with appropriate @ConditionalOn* guards.