The @Autowired annotation in Spring is used for automatic dependency injection. It allows Spring to resolve and inject the required
beans into your bean. For example to inject a @Repository object into a @Service.
The Spring dependency injection mechanism cannot identify which constructor to use for auto-wiring when multiple constructors are present in a class. This ambiguity can cause the application to crash at runtime, and it makes the code less clear to understand and more complex to extend and maintain.
Use the @Autowired annotation to specify which constructor to use for auto-wiring.
@Component
public class ExampleClass { // Noncompliant, multiple constructors present and no @Autowired annotation to specify which one to use
private final DependencyClass1 dependency1;
public ExampleClass() {
throw new UnsupportedOperationException("Not supported yet.");
}
public ExampleClass(DependencyClass1 dependency1) {
this.dependency1 = dependency1;
}
// ...
}
@Component
public class ExampleClass {
private final DependencyClass1 dependency1;
public ExampleClass() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Autowired
public ExampleClass(DependencyClass1 dependency1) {
this.dependency1 = dependency1;
}
// ...
}