Я немного обошел проблему, с которой столкнулся.
Моя проблема заключалась в том, что у меня было три реализации для Service, например ServiceImpl1, ServiceImpl2 и ServiceImpl3
в файле свойств для заполнителя my.serviceImpl у меня могут быть значения как
my.serviceImpl = serviceImpl1
или
my.serviceImpl = serviceImpl2
или
my.serviceImpl = serviceImpl3
Так что в моем контроллере я могу использовать @Qualifier ($ {my.my.serviceImpl})
но это не сработало, я даже попытался @value для, но также не получилось.
Итак, наконец, я определил bean-компонент в своем ApplicationConf.java как
@Bean(name = "myServiceImpl")
public Service myService() {
String beanName = environment.getProperty("my.serviceImpl");
if (beanName.equals("serviceImpl1")) {
return new serviceImpl1();
}
else if(beanName.equals("serviceImpl2")){
return new serviceImpl2();
}
else if(beanName.equals("serviceImpl3")){
return new serviceImpl3();
}
}
И в моем контроллере я использовал квалификатор как
@Autowired
@Qualifier("myServiceImpl")
Service myService;
Хотя не уверен, что это лучший способ сделать это.