Use @SpringBootApplication instead of @Configuration + @EnableAutoConfiguration + @ComponentScan

ID

java.spring_use_springbootapplication

Severity

low

Remediation Complexity

trivial

Remediation Risk

low

Remediation Effort

low

Resource

Best Practice

Language

Java

Tags

best-practice, code-style, spring

Description

Reports classes annotated with the combination of @Configuration, @EnableAutoConfiguration, and @ComponentScan. This trio is exactly what @SpringBootApplication encapsulates.

Rationale

@SpringBootApplication is a meta-annotation equivalent to @Configuration + @EnableAutoConfiguration + @ComponentScan. Using the three annotations separately adds unnecessary verbosity and deviates from the idiomatic Spring Boot convention.

// Bad - verbose, non-idiomatic
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application { ... }

Remediation

Replace the three annotations with @SpringBootApplication.

// Good - idiomatic Spring Boot entry point
@SpringBootApplication
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}