Настройка параметров шага в приложении Spring Batch - PullRequest
0 голосов
/ 31 октября 2019

Я работаю с Spring Batch (используя загрузку Spring). Мое требование - , чтобы прочитать данные из базы данных, обработать их (проверки и прочее) и записать их в файл. Я пытаюсь добиться этого, используя пакетный шаг.

Проблема в , если я определяю шаг, читатель, процессор и записывающее устройство должны иметь схожие параметры (из примеров, которые я видел иошибка, которую я получил) Например, если мой читатель возвращает объект домена db, процессор и устройство записи должны иметь параметры объекта домена.

Я ищу , читатель должен вернуть объект домена, процессор должен получить объект домена и преобразовать его в dto / pojo (после проверки и преобразования данных) и вернуть объект dto. Writer должен получать объект dto и записывать его в файл.

Пожалуйста, дайте мне знать, если это возможно в один шаг пакета, чтобы иметь различные виды параметров. Если да, пожалуйста, дайте мне пример / ссылки на него.

1 Ответ

0 голосов
/ 04 ноября 2019

Преобразование предметов - это типичный вариант использования процессора предметов. Вот выдержка из раздела ItemProcessor документов:

ItemProcessor прост. Получив один объект, преобразуйте его и верните другой. Предоставленный объект может иметь или не иметь тот же тип

Таким образом, в вашем случае читатель может вернуть доменные объекты, которые преобразованы процессором элемента в DTO. Затем автор получит DTO и запишет их в файл. Вот быстрый пример, который преобразует числа в строки:

@Bean
public ItemReader<Integer> itemReader() {
    return new ListItemReader<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
}

@Bean
public ItemProcessor<Integer, String> itemProcessor() {
    return item -> "foo" + item;
}

@Bean
public ItemWriter<String> itemWriter() {
    return items -> {
        for (String item : items) {
            System.out.println("item = " + item);
        }
    };
}

@Bean
public Step step() {
    return stepBuilderFactory.get("step")
            .<Integer, String>chunk(5)
            .reader(itemReader())
            .processor(itemProcessor())
            .writer(itemWriter())
            .build();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...