У меня есть весеннее пакетное приложение, настроенное по ссылке ниже.
https://spring.io/guides/gs/batch-processing/
Теперь мне нужно настроить step таким образом, чтобы он принимал FlatFileItemReader, если пользовательский ввод является файлом, и JdbcPagingItemReader, если вводится SQL. Я бы передал входные данные (файл / sql) как параметры задания.
Насколько я понимаю, все в приведенном выше примере Spring - это одноэлементные bean-компоненты, которые загружаются в ApplicationContext при запуске приложения. Как шаг можно настроить только один раз с одним Читателем. Как мне настроить его, чтобы он принимал разные ридеры в зависимости от ввода пользователя
Я не предпочитаю создавать несколько рабочих мест, если меняется только читатель.
Я думал об использовании шаблонов Factory / Strategy, но это возможно, только если Step не является bean-компонентом. Здесь все это bean-компоненты, которые загружаются при запуске приложения.
Независимо от шаблонов, было бы полезно использовать разные считыватели на шаге на основе параметров задания.