Я пытаюсь получить readCount от StepExecution, чтобы записать его в свою базу данных на writer().
Есть ли способ поместить StepExecution в записывающую (JdbcBatchItemWriter) часть Step, чтобы я мог вызвать getReadCount() на нем?
Вы можете аннотировать свой метод аннотациями @AfterStep или @AfterWrite.
Например
@AfterStep
public void afterStep(StepExecution stepExecution) {
//do your thing
}
Но тогда вам нужно либо расширить JdbcBatchItemWriter, либо обернуть его. Вам решать, как вы хотите действовать.
ваш класс, который даст, будет следующим:
открытый класс CustomStepListener реализует StepExecutionListener {
@Override
public void beforeStep(StepExecution stepExecution) {
System.out.println("StepExecutionListener - beforeStep");
}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
stepExecution.getReadCount();
return null;
}
}
и настройте этот класс, в котором настроены читатель и писатель
Мне удалось найти обходной путь.
Я помещаю инкрементор в свой RowMapper, который записывает rowCount в инициализируемый в нем DTO, который увеличивается каждый раз, когда вызывается rowMapper (равный количеству строк, переданных ему).
Это означало, что поскольку мой писатель управляющей таблицы будет использовать последний экземпляр DTO, у него будет правильное количество строк, которое я мог бы записать в свою таблицу.
Можете ли вы показать конфигурацию вашей партии?