You can use @Qualifierwith @Autowired. In fact, Spring will ask you to explicitly select a component if an ambiguous type of component is detected, in which case you must provide a qualifier
.For example, in the following case, you must provide a qualifier
@Component
@Qualifier("staff")
public Staff implements Person {}
@Component
@Qualifier("employee")
public Manager implements Person {}
@Component
public Payroll {
private Person person;
@Autowired
public Payroll(@Qualifier("employee") Person person){
this.person = person;
}
}
EDIT:
Lombok 1.18.4, , , @Qualifier, :
@Component
@Qualifier("staff")
public Staff implements Person {}
@Component
@Qualifier("employee")
public Manager implements Person {}
@Component
@RequiredArgsConstructor
public Payroll {
@Qualifier("employee") private final Person person;
}
, lombok.config copyableAnnotations lombok ( lombok.config ):
lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier
lombok 1.18.4.
, @Autowired @Qualifier , ( )
public Payroll {
@Autowired @Qualifier("employee") private final Person person;
}
public Payroll {
private final Person person;
@Autowired
@Qualifier("employee")
public void setPerson(Person person) {
this.person = person;
}
}
, , . , -
public Payroll {
private Person person;
@Autowired
public Payroll(@Qualifier("employee") Person person){
this.person = person;
}
}