У меня есть две реализации сервиса:
Интерфейс сервиса:
/**
* Service used for resolving external ID for the entity.
*/
public interface ResolveService {
String valueToResolve(String id);
}
Реализация сервиса - A:
@Service
public class ResolveServiceAImpl implements {
@Override
public String valueToResolve(String id) {
// grpc impl...
}
}
Реализация Служба - B:
@Service
public class ResolveServiceBImpl implements {
@Override
public String valueToResolve(String id) {
// jpa impl...
}
}
На данный момент это разрешено с помощью @Qualifier
, и эта реализация работает:
@Qualifier("resolveServiceBImpl")
@Autowired
private ResolveService resolveService;
Проблема для меня заключается в том, что я не хочу определять в каждом классе строковое значение @Qualifier. Я хотел бы определить значение @Qualifier в одном месте, скажем, в файле application.properties.
application.properties:
resolve.service.active=resolveServiceBImpl
Эта реализация не работает :
@Value("'${resolve.service.active}')")
private String resolveServiceActive;
@Qualifier(resolveServiceActive)
@Autowired
private ResolveService resolveService;
Я получаю ошибку: Attribute value must be constant. Cannot find bean with qualifier null.
Есть ли другой способ разрешения значения @Qualifier, так что мне нужно присваивать его вручную в каждом классе отдельно?