Я создал свой собственный ItemReader:Как инициализировать пользовательский ItemReader?
@Component("pricereader")
public class MyItemReader implements ItemReader<Price>{
@Override
public Price read() throws Exception, UnexpectedInputException, ParseException,
NonTransientResourceException {
// TODO Auto-generated method stub
return null;
}
}
Назвав его в работу, определенной таким образом:
<batch:job id="job1">
<batch:step id="step1">
<batch:tasklet>
<batch:chunk reader="pricereader" processor="priceprocessor" writer="pricewriter" commit-interval="1"/>
</batch:tasklet>
</batch:step>
</batch:job>
Этот itemReader должен анализировать данные из внешнего файла. я мог думать о чем-то вроде этого:
private Scanner scanner;
public MyItemReader(String filepath){
//initializing scanner
}
Во всяком случае я обнаружил, что конструктор вызывается при инициализации весной и мне не нравится идея держать открытое подключение к файлу в памяти. Кроме того, я бы хотел использовать этот ItemReader для чтения данных из нескольких файлов, поэтому добавление этой информации внутри конструктора тоже не очень хорошо ... любые идеи?
Это место на! Глядя на код для «FlatFileItemReader», я смог реализовать наследование пользовательского считывателя из «AbstractItemCountingItemStreamItemReader», которое уменьшило сложность моего собственного кода до минимума. – oschlueter