Careeroza
Auto-Configuration Explained
What Auto-Configuration Does
Auto-configuration is Spring Boot looking at your classpath and properties and creating sensible beans for you. Add spring-boot-starter-data-jpa and a MySQL driver, and you get a DataSource, an EntityManagerFactory and a transaction manager without writing a single @Bean.
@SpringBootApplication=@SpringBootConfiguration+@ComponentScan+@EnableAutoConfiguration.@EnableAutoConfigurationreads the fileMETA-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.importsfrom every jar.- Each listed class is an
@AutoConfigurationguarded by@Conditional...annotations. - Your own beans always win: most auto-config beans use
@ConditionalOnMissingBean.
Seeing the Decisions
Example
Start with --debug (or debug=true) to print the condition evaluation report:
java -jar shopease.jar --debugExample output
============================
CONDITIONS EVALUATION REPORT
============================
Positive matches:
-----------------
DataSourceAutoConfiguration matched:
- @ConditionalOnClass found required classes 'javax.sql.DataSource', 'org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType'
DataSourceConfiguration.Hikari matched:
- @ConditionalOnClass found required class 'com.zaxxer.hikari.HikariDataSource'
Negative matches:
-----------------
MongoAutoConfiguration:
Did not match:
- @ConditionalOnClass did not find required class 'com.mongodb.client.MongoClient'Tip: In a running app, the Actuator endpoint /actuator/conditions shows the same report as JSON.
Turning One Off
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
public class ShopEaseApplication { ... }Example
Or from configuration:
application.yml
spring:
autoconfigure:
exclude: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration