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.
0
0
How auto-configuration works in Spring Boot
Introduction
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.