Spring Boot AutoConfigure provides auto-configuration capabilities that automatically configure Spring applications based on jar dependencies present on the classpath
—
Spring Boot AutoConfigure provides automatic configuration of Spring applications based on classpath dependencies. It intelligently configures beans and application contexts, reducing boilerplate while allowing full customization.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>4.0.2</version>
</dependency>implementation 'org.springframework.boot:spring-boot-autoconfigure:4.0.2'import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}The @SpringBootApplication annotation automatically:
Automatically configures Spring beans based on classpath dependencies and existing beans. Configurations can be excluded when not needed.
Control when beans are registered based on:
@ConditionalOnClass, @ConditionalOnMissingClass@ConditionalOnBean, @ConditionalOnMissingBean@ConditionalOnProperty@ConditionalOnJava, @ConditionalOnCloudPlatform@ConditionalOnWebApplicationCentralized configuration through properties classes:
| Annotation | Purpose | Common Use |
|---|---|---|
@SpringBootApplication | Main application annotation | Bootstrap application |
@EnableAutoConfiguration | Enable auto-configuration | Custom configuration classes |
@AutoConfiguration | Define auto-configuration | Create custom auto-configs |
@ConditionalOnClass | Check class presence | Feature detection |
@ConditionalOnBean | Check bean presence | Conditional bean creation |
@ConditionalOnProperty | Check property value | Feature flags |
| Capability | Description | Reference |
|---|---|---|
| Core Annotations | Main auto-configuration annotations | Reference |
| Conditional Logic | 20+ conditional annotations | Reference |
| SSL/TLS | SSL bundle configuration | Reference |
| Task Execution | Thread pool management | Reference |
| Web Config | Error handling, resources | Reference |
| Data Repositories | Repository auto-configuration | Reference |
| Service Connections | External service connections | Reference |
| Templates | Template engine support | Reference |
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class Application { }@AutoConfiguration
@ConditionalOnClass(MyService.class)
public class MyAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public MyService myService() {
return new MyService();
}
}debug=trueControl when auto-configurations apply:
@AutoConfigureBefore - Run before specified configs@AutoConfigureAfter - Run after specified configs@AutoConfigureOrder - Explicit orderingFine-grained control over bean creation:
Type-safe configuration binding:
@ConditionalOnClass over @ConditionalOnExpression@ConditionalOnMissingBean for customizable beansApplicationContextRunner for testingEnable debug mode to see condition evaluation:
debug=true@Lazy or restructure dependencies@ConditionalOnClassSee Troubleshooting Guide for detailed solutions.
DEFERRED or LAZY for large applicationsFor issues and questions:
Install with Tessl CLI
npx tessl i tessl/maven-org-springframework-boot--spring-boot-autoconfigure