Я пытаюсь добиться внедрения зависимости в зависимости от того, какая страна вызывает мою конечную точку во время выполнения, поэтому у меня есть следующая настройка.
public interface Client {
void call(Data data);
}
@Profile({"prod"})
public class ClientA implements Client {
@Override
public void call(Data data) {
// implementations goes here
}
}
@Profile({"dev"})
public class ClientB implements Client {
@Override
public void call(Data data) {
// implementations goes here
}
}
Но этой настройки сейчас достаточно, поскольку она зависит только от среды, в которой приложение работает на. Я посмотрел на пружины @Condition
аннотации, но этого, похоже, недостаточно. То, чего я хочу добиться, чтобы иметь возможность определить свойство в моем файле свойств, которое определяет, для каких стран данный имплицит должен быть инициализирован во время выполнения. Так что-то вроде:
@Profile("${client.a.countries}")
public class ClientA implements Client {
@Override
public void call(Data data) {
// implementations goes here
}
}
и затем в моих файлах application.propeties я просто определяю client.a.countries=DE,GB,ES
. Есть ли способ достичь этого? Поэтому, когда веб-интерфейс вызывает мою конечную точку, я знаю, из какой страны он вызывается, и поэтому должен знать, какую реализацию использовать. Я преследую это неправильно, если я собираюсь заняться реализацией шаблона Factory для достижения своей цели или это возможно с помощью Spring?