Предположим, у меня есть два bean-компонента, определенных следующим образом:
@Configuration
public class ConfigurationA {
@Bean
@Qualifier("restTemplateA")
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
//setting some restTemplate properties
return restTemplate;
}
}
@Configuration
public class ConfigurationB {
@Bean
@Qualifier("restTemplateB")
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
//setting some restTemplate properties
return restTemplate;
}
}
Когда я автоматически подключаю restTemplate без предоставления @Qualifier, какой компонент будет введен? Как это решено?
@Service
public class someClass {
@Autowired
private RestTemplate restTemplate;
}
Примечание: при тестировании вводится один из бобов. Это не привело ни к какому исключению.
Примечание2: я знаю, что могу использовать @Qualifier для внедрения нужного компонента или использовать @Primary, чтобы избежать двусмысленности. Но Я просто хочу понять, почему он действителен для Spring.
Примечание 3: Когда я изменил имя метода в классе ConfigurationB на restTemplateB, бин, определенный в ConfigurationA, вводится. Опять же это не привело ни к какому исключению.
Я пробовал это в Spring Boot версии 1.4.4