Multiple @EnableAutoConfiguration annotations

ID

java.spring_enable_autoconfiguration_unique

Severity

high

Remediation Complexity

trivial

Remediation Risk

low

Remediation Effort

low

Resource

Reliability

Language

Java

Tags

best-practice, reliability, spring

Description

Reports when multiple classes in the same compilation unit are annotated with @EnableAutoConfiguration.

Rationale

Spring Boot’s auto-configuration mechanism is designed to be activated once per application context. Having multiple @EnableAutoConfiguration entry points causes unpredictable bean registration order, potential duplicate bean definitions, and startup failures that are difficult to diagnose.

// Bad - two auto-configuration entry points
@EnableAutoConfiguration
public class AppConfig { ... }

@EnableAutoConfiguration
public class WebConfig { ... }

Remediation

Keep a single @EnableAutoConfiguration (or @SpringBootApplication) in the application. Remove the duplicate annotation from other configuration classes.

// Good - single entry point
@SpringBootApplication
public class AppConfig { ... }

@Configuration
public class WebConfig { ... }