What is Spring Boot auto-configuration internals?
Why Interviewers Ask This
Senior Spring Boot engineers are expected to reason about architecture, performance, and edge cases. This question separates mid-level from senior candidates by testing deep system-level understanding.
Answer
Understanding Spring Boot auto-configuration deeply: AutoConfiguration loading mechanism (Spring Boot 3.x): AutoConfigurationImportSelector implements ImportSelector. When @EnableAutoConfiguration is processed, Spring invokes getAutoConfigurationEntry() which reads all auto-configuration class names from META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. These are filtered by @Conditional annotations. AutoConfiguration ordering: @AutoConfiguration(after = DataSourceAutoConfiguration.class) ensures correct ordering — JPA config activates after DataSource config. @AutoConfiguration(before = WebMvcAutoConfiguration.class) for earlier activation. Creating custom auto-configuration: (1) Create @AutoConfiguration @ConditionalOnClass(MyLibrary.class) public class MyLibraryAutoConfiguration { @Bean @ConditionalOnMissingBean public MyLibraryService myLibraryService() { return new MyLibraryService(); } }; (2) Register in META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: com.example.MyLibraryAutoConfiguration. Debugging auto-configuration: start with --debug → ConditionEvaluationReport printed. Or ConditionEvaluationReportLoggingListener. @Conditional variants: @ConditionalOnClass/@ConditionalOnMissingClass (classpath presence), @ConditionalOnBean/@ConditionalOnMissingBean (bean presence), @ConditionalOnProperty (property value), @ConditionalOnWebApplication/@ConditionalOnNotWebApplication, @ConditionalOnExpression (SpEL), @ConditionalOnResource (resource exists), @ConditionalOnSingleCandidate (exactly one qualifying bean). Order matters: @ConditionalOnMissingBean checks happen after all @Bean methods in @Configuration classes are processed — auto-configuration "gives up" if user defined their own bean.
Common Mistake
A common mistake is memorizing definitions without understanding implications. When asked this question, go one level deeper — explain what happens when this concept is misused or ignored.
Previous
What is Spring Boot microservices patterns?
Next
What is Spring Security OAuth2 and JWT implementation?