У меня есть метод, который я написал внутри конструктора.
Когда я планирую пакетное задание Spring Этот метод не вызывается через указанный c интервал времени.
Только он вызывается во время Spring Запуск пакетного приложения.
Может кто-нибудь подсказать какую-либо логи c, как я могу запланировать Spring Batch
приложение, которое будет перезапускать мое приложение через определенный c интервал времени.
private int nextULPIndex;
private List<Data> finalULPData;
public JsonItemReaderFromULProspector() {
ULProspectorAPICall.runShellScript();
logger.info("API call to ULProspector successfully executed inside JsonItemReaderFromULProspector");
logger.info("Inside Constructor of JsonItemReaderFromULProspector");
initialize();
}
private void initialize() {
List<Data> ulpData = ReadJSONFromULP.getJsonObject();
logger.info("initialize() Started");
finalULPData = Collections.unmodifiableList(ulpData);
nextULPIndex = 0;
}
finalULPData вызывается внутри метода run () класса ItemReader
Я не могу вызвать initialize () внутри run (), потому что метод run () вызывается неоднократно в зависимости от размера чанка.
public class JsonItemReaderFromULProspector implements ItemReader<Data> {
@Override
public Data read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
Data nextULPData = null;
logger.info("read() method JsonItemReaderFromULProspector class :Start");
if (nextULPIndex < finalULPData.size()) {
nextULPData = finalULPData.get(nextULPIndex);
nextULPIndex++;
}
return nextULPData;
}
}
Этот класс вызывается из класса BatchConfig, как показано ниже.
@StepScope
@Lazy
ItemReader<Data> reader() {
return new JsonItemReaderFromULProspector();
}
@Bean
@Lazy
public Step step1() throws Exception {
return stepBuilderFactory.get("step1").<Data, ULPData>chunk(10).reader(reader()).processor(ulProspectorDataProcessor()).writer(ulpDataWriter.jsonFileDatabaseItemWriter()).build();
}
@Bean
public Job job() throws Exception {
return this.jobBuilderFactory.get("job").incrementer(new RunIdIncrementer())
.start(callUlPApiStep())
.next(deleteRecordsFromTableStep())
.next(step1()).build();}