Как написать пользовательский элемент чтения плоских файлов, используя конфигурацию XML
Я новичок в весенней партии. Я использую программу чтения плоских файлов, настроенную в XML-файле. затем есть процессор, который обрабатывает каждый созданный объект. Мне нужно предварительно обработать содержимое файла, прежде чем передать его в средство чтения файлов. Обработанные результаты / файл не должны быть записаны на диск. Могу ли я знать, как сделать это через конфигурацию файла XML. это тасклет или расширение чтения плоских файлов? тогда процессор должен работать как прежде без изменений. Мне нужно представить слой перед передачей файла в программу чтения плоских файлов.
1 ответ
Ты можешь использовать ItemReadListener
за это. ItemReadListener имеет три метода обратного вызова.
beforeRead , afterRead and onReadError.
Вы можете, но ваша логика в beforeRead
,
Пример кода для CustomItemReaderListener
public class CustomItemReaderListener implements ItemReadListener<Domain> {
@Override
public void beforeRead() {
System.out.println("ItemReadListener - beforeRead");
//I need to pre process contents of file before passing it to file item reader
// add this logic here
}
@Override
public void afterRead(Domain item) {
System.out.println("ItemReadListener - afterRead");
}
@Override
public void onReadError(Exception ex) {
System.out.println("ItemReadListener - onReadError");
}
}
Сопоставьте слушателей с Step in XML:
<step id="step1">
<tasklet>
<chunk reader="myReader" writer="flatFileItemWriter"
commit-interval="1" />
<listeners>
<listener ref="customItemReaderListener" />
</listeners>
</tasklet>
</step>