Для некоторого контекста у меня есть Java-приложение, которое принимает файл JSON и выполняет некоторую обработку с использованием пользовательских правил, основанных на информации внутри файла.Проблема, с которой я столкнулся в настоящее время, заключается в том, что я пытаюсь динамически определить, какой класс обслуживания использовать для обработки файла во время выполнения.Ниже моя текущая реализация:
Интерфейс
public interface DataService {
public void loadData(String path);
}
Реализация 1
@Service
public class ClassA implements DataService {
// some attributes...
public void loadData(String path) {
// implementation
}
}
Реализация 2
@Service
public class ClassB implements DataService {
// some attributes...
public void loadData(String path) {
// implementation
}
}
Реализация 3
@Service
public class ClassC implements DataService {
// some attributes...
public void loadData(String path) {
// implementation
}
}
Использование класса
@Service
public class DataRunner {
@Autowired
private DataService dataService;
@Value("${task.file}")
private String taskFile;
@PostConstruct
public void init() {
// process the incoming taskFile and derive an enum called DataSource
dataService.loadData("/example/file/location"); // what I wish would work
}
}
Так, как вы можетепосмотрите, что метод init в классе DataRunner просто желаемое за действительное на данный момент.Возможно ли с помощью Spring Boot динамически определить, какой класс обслуживания использовать во время выполнения?Или я должен делать что-то совершенно другое, чтобы достичь того, чего я хочу здесь?