How does Spring Boot decide to auto-configure a `DataSource` when you add a JDBC driver and `spring-boot-starter-data-jpa`?
basic@SpringBootApplication includes @EnableAutoConfiguration, which imports every class listed in META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports from jars on the classpath. Each is guarded by conditions such as @ConditionalOnClass(DataSource.class) and @ConditionalOnMissingBean.
DataSourceAutoConfigurationcreates a Hikari pool whenspring.datasource.urlis present (or an embedded DB if one is on the classpath).- User-defined beans always back off auto-configured ones via
@ConditionalOnMissingBean. spring.factorieswas replaced for auto-config by the.importsfile in Boot 2.7/3.0.
- Is auto-configuration the same as component scanning? No, scanning finds your classes; auto-config imports library configuration classes conditionally.
- Does Boot 3 still read
EnableAutoConfigurationkeys fromspring.factories? No, support was removed in 3.0.