Spring Boot Auto Configuration Interview Questions and Answers
Master Spring Boot Auto Configuration with interview questions covering @EnableAutoConfiguration, @Conditional annotations, AutoConfiguration.imports, SpringFactories, bean creation, startup flow, and production best practices.
Introduction
One of the biggest reasons Spring Boot became popular is Auto Configuration.
Before Spring Boot, developers manually configured every component, including:
- DispatcherServlet
- DataSource
- EntityManager
- TransactionManager
- Jackson
- Tomcat
- Security
- Message Converters
Spring Boot automatically configures these components based on:
- Dependencies on the classpath
- Existing beans
- Application properties
- Environment
Auto Configuration dramatically reduces configuration effort while still allowing developers to override the default behavior.
Auto Configuration Architecture
flowchart LR
ApplicationStart --> SpringApplication
SpringApplication --> AutoConfiguration
AutoConfiguration --> ClasspathAnalysis
ClasspathAnalysis --> CreateBeans
CreateBeans --> ApplicationContext
ApplicationContext --> EmbeddedTomcat
Q1. What is Auto Configuration?
Answer
Auto Configuration is a Spring Boot feature that automatically creates and configures Spring beans based on the application's environment.
Instead of writing configuration manually,
Spring Boot intelligently detects what is needed.
For example,
Adding
spring-boot-starter-web
automatically configures
- Embedded Tomcat
- DispatcherServlet
- Jackson
- Spring MVC
- Error Handling
No additional Java configuration is required.
Q2. Which annotation enables Auto Configuration?
The annotation is
@EnableAutoConfiguration
Normally, developers use
@SpringBootApplication
because it already includes
@Configuration
@EnableAutoConfiguration
@ComponentScan
Relationship
flowchart TD
SpringBootApplication --> Configuration
SpringBootApplication --> EnableAutoConfiguration
SpringBootApplication --> ComponentScan
Q3. How does Auto Configuration work?
During application startup Spring Boot performs:
- Creates Environment
- Loads configuration properties
- Scans the classpath
- Loads Auto Configuration classes
- Evaluates conditions
- Creates required beans
Startup Flow
sequenceDiagram
Application->>SpringApplication: run()
SpringApplication->>Classpath: Scan Dependencies
Classpath-->>SpringApplication: Dependencies
SpringApplication->>AutoConfiguration: Load Classes
AutoConfiguration->>Conditions: Evaluate
Conditions-->>ApplicationContext: Create Beans
ApplicationContext-->>EmbeddedServer: Start
Q4. Where are Auto Configuration classes defined?
Spring Boot 3+
Spring Boot 3 stores auto configuration metadata in
META-INF/spring/
org.springframework.boot.autoconfigure.AutoConfiguration.imports
Example
DataSourceAutoConfiguration
WebMvcAutoConfiguration
JacksonAutoConfiguration
Earlier versions of Spring Boot used spring.factories.
Q5. What are Conditional Annotations?
Auto Configuration uses conditional annotations to decide whether beans should be created.
Common annotations
| Annotation | Purpose |
|---|---|
| @ConditionalOnClass | Class exists |
| @ConditionalOnBean | Bean exists |
| @ConditionalOnMissingBean | Bean missing |
| @ConditionalOnProperty | Property exists |
| @ConditionalOnWebApplication | Web application |
| @ConditionalOnResource | Resource exists |
Example
@ConditionalOnClass(
DataSource.class)
If DataSource is present,
the configuration is activated.
Q6. What is @ConditionalOnMissingBean?
This is one of the most important annotations.
Example
@Bean
@ConditionalOnMissingBean
ObjectMapper objectMapper(){
return new ObjectMapper();
}
Meaning
- If the developer has already created an
ObjectMapper, Spring Boot does nothing. - Otherwise, Spring Boot creates one automatically.
This allows customization without modifying framework code.
Q7. How does DataSource Auto Configuration work?
If Spring Boot detects
- JDBC Driver
- DataSource dependency
- Database properties
it automatically creates
- DataSource
- JdbcTemplate
- TransactionManager
Flow
flowchart LR
DatabaseDriver --> AutoConfiguration
ApplicationProperties --> AutoConfiguration
AutoConfiguration --> DataSource
DataSource --> JdbcTemplate
Example properties
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
Q8. How can you disable Auto Configuration?
Sometimes automatic configuration is not required.
Example
@SpringBootApplication(
exclude = {
DataSourceAutoConfiguration.class
})
public class Application {
}
Alternative
spring.autoconfigure.exclude=
Use this carefully because disabling auto configuration may affect other dependent components.
Q9. How can you create Custom Auto Configuration?
Spring Boot allows library authors to provide custom auto configuration.
Steps
- Create configuration class.
- Add conditional annotations.
- Register class in
AutoConfiguration.imports
Example
@AutoConfiguration
public class CustomConfiguration {
}
This mechanism is commonly used when building reusable frameworks or internal platform libraries.
Q10. Auto Configuration Best Practices
Prefer Defaults
Do not manually configure components that Spring Boot already provides.
Override Only When Needed
Customize beans only if business requirements demand it.
Use Conditional Annotations
Prevent duplicate bean creation.
Avoid Disabling Auto Configuration Unnecessarily
Keep Spring Boot conventions whenever possible.
Banking Example
flowchart TD
SpringBootApplication --> AutoConfiguration
AutoConfiguration --> DataSource
AutoConfiguration --> EntityManager
AutoConfiguration --> TransactionManager
AutoConfiguration --> DispatcherServlet
DispatcherServlet --> BankingRESTAPI
Developers focus on business logic while Spring Boot handles infrastructure configuration.
Common Interview Questions
- What is Auto Configuration?
- How does Auto Configuration work?
- What is
@EnableAutoConfiguration? - What is
@ConditionalOnClass? - What is
@ConditionalOnMissingBean? - Where are Auto Configuration classes registered?
- How do you disable Auto Configuration?
- How do you customize Auto Configuration?
- Spring Boot 2 vs Spring Boot 3 auto configuration?
- Auto Configuration best practices?
Quick Revision
| Topic | Summary |
|---|---|
| Auto Configuration | Automatic bean configuration |
| @EnableAutoConfiguration | Enables auto configuration |
| @SpringBootApplication | Includes auto configuration |
| @ConditionalOnClass | Activate when class exists |
| @ConditionalOnBean | Bean must exist |
| @ConditionalOnMissingBean | Bean must not exist |
| DataSourceAutoConfiguration | Creates DataSource automatically |
| AutoConfiguration.imports | Registers auto configuration classes |
| Exclude | Disable specific auto configuration |
| Custom Auto Configuration | Build reusable framework modules |
Auto Configuration Lifecycle
sequenceDiagram
Application->>SpringApplication: Start
SpringApplication->>Classpath: Scan Dependencies
Classpath-->>SpringApplication: Libraries
SpringApplication->>AutoConfiguration.imports: Load Configurations
AutoConfiguration.imports-->>SpringApplication: Configuration Classes
SpringApplication->>Conditional Checks: Evaluate Conditions
Conditional Checks-->>ApplicationContext: Create Beans
ApplicationContext-->>Embedded Tomcat: Start Server
Production Example – Banking Microservice Startup
A banking application includes these dependencies:
spring-boot-starter-webspring-boot-starter-data-jpa- PostgreSQL Driver
spring-boot-starter-securityspring-boot-starter-actuator
During startup, Spring Boot automatically configures:
- Embedded Tomcat
- DispatcherServlet
- DataSource
- EntityManagerFactory
- TransactionManager
- Spring Security Filter Chain
- Jackson ObjectMapper
- Actuator Endpoints
flowchart LR
Dependencies --> AutoConfiguration
AutoConfiguration --> EmbeddedTomcat
AutoConfiguration --> DispatcherServlet
AutoConfiguration --> DataSource
AutoConfiguration --> EntityManager
AutoConfiguration --> SecurityFilterChain
AutoConfiguration --> Actuator
Actuator --> Prometheus
Without Auto Configuration, developers would need hundreds of lines of configuration code to create the same infrastructure.
Key Takeaways
- Auto Configuration is a core Spring Boot feature that automatically creates infrastructure beans based on dependencies, configuration properties, and the runtime environment.
@SpringBootApplicationincludes@EnableAutoConfiguration, enabling automatic framework configuration.- Spring Boot 3 registers auto configuration classes using
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. - Conditional annotations such as
@ConditionalOnClass,@ConditionalOnMissingBean, and@ConditionalOnPropertydetermine when configuration should be applied. @ConditionalOnMissingBeanallows developers to override default beans without changing framework code.- Auto Configuration significantly reduces boilerplate while remaining fully customizable.
- Developers should rely on Spring Boot defaults whenever possible and override behavior only when required.
- Understanding Auto Configuration internals is a common interview topic for senior Spring Boot developers and solution architects.