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:

  1. Creates Environment
  2. Loads configuration properties
  3. Scans the classpath
  4. Loads Auto Configuration classes
  5. Evaluates conditions
  6. 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

  1. Create configuration class.
  2. Add conditional annotations.
  3. 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-web
  • spring-boot-starter-data-jpa
  • PostgreSQL Driver
  • spring-boot-starter-security
  • spring-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.
  • @SpringBootApplication includes @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 @ConditionalOnProperty determine when configuration should be applied.
  • @ConditionalOnMissingBean allows 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.