Why this matters
Using `@Autowired` field injection can lead to early initialization issues. Factory method injection ensures dependencies are resolved only when needed.
Ensure that factory method injection is used in `@Configuration` classes instead of `@Autowired` field injection.
Using `@Autowired` field injection can lead to early initialization issues. Factory method injection ensures dependencies are resolved only when needed.
Side-by-side examples engineers can pattern-match during review.
@Configuration
public class FooConfiguration {
@Autowired private DataSource dataSource ; // Noncompliant
@Bean
public MyService myService() {
return new MyService(this .dataSource );
}
}@Configuration
public class FooConfiguration {
@Bean
public MyService myService(DataSource dataSource) {
return new MyService(dataSource);
}
}@Configuration
public class FooConfiguration {
@Autowired private DataSource dataSource ; // Noncompliant
@Bean
public MyService myService() {
return new MyService(this .dataSource );
}
}@Configuration
public class FooConfiguration {
@Bean
public MyService myService(DataSource dataSource) {
return new MyService(dataSource);
}
}From the same buckets as this rule.
For changes that affect architecture, data models, external APIs, security posture, deployment topology, or cost (>10%), create an ADR in docs/adr/ using the standard template (Context, Decision, Consequences) and link the PR and issue IDs.