0
0
Spring Bootframework~5 mins

How auto-configuration works in Spring Boot

Choose your learning style9 modes available
Introduction

Auto-configuration helps your Spring Boot app set up common features automatically. It saves you time by guessing what you need based on what is in your project.

When you want to quickly start a web app without writing setup code.
When you add a database library and want Spring Boot to configure it for you.
When you want to use security features without manual setup.
When you want to avoid writing boilerplate configuration files.
When you want your app to adapt automatically as you add new libraries.
Syntax
Spring Boot
Spring Boot uses special files named spring.factories or META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
These files list classes that provide auto-configuration.
Spring Boot loads these classes if certain conditions are met.
Auto-configuration classes use @Configuration and @Conditional annotations to decide if they should run.
You can disable specific auto-configurations using @SpringBootApplication(exclude = {ClassName.class}) or properties.
Examples
This basic app uses auto-configuration to set up many things automatically.
Spring Boot
@SpringBootApplication
public class MyApp {
  public static void main(String[] args) {
    SpringApplication.run(MyApp.class, args);
  }
}
This disables the auto-configuration for database setup.
Spring Boot
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApp {
  public static void main(String[] args) {
    SpringApplication.run(MyApp.class, args);
  }
}
Auto-configuration classes check if certain classes exist before running.
Spring Boot
@Configuration
@ConditionalOnClass(DataSource.class)
public class DataSourceAutoConfiguration {
  // configures DataSource bean if DataSource class is on classpath
}
Sample Program

This simple Spring Boot app uses auto-configuration to start a web server automatically. You don't write any server setup code. When you run it, it listens on port 8080 and responds with a greeting.

Spring Boot
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

@RestController
class HelloController {
    @GetMapping("/")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}
OutputSuccess
Important Notes

Auto-configuration runs after your own configuration, so you can override defaults.

Use @Conditional annotations to create your own auto-configurations.

Check the Spring Boot docs for the list of auto-configured features.

Summary

Auto-configuration sets up common features automatically based on your project.

It uses special classes and conditions to decide what to configure.

You can disable or customize auto-configuration easily.