Как написать пользовательский элемент чтения плоских файлов, используя конфигурацию 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>
Другие вопросы по тегам