Я использую поток данных Spring Cloud и создал задачу Spring Cloud, которая содержит задание.Это задание имеет параметр last_modified_date, который является необязательным.В коде я указал, какую дату брать в случае, если last_modified_date имеет значение null, то есть он не был передан в качестве параметра.Проблема в том, что если для одного экземпляра задания я передаю last_modified_date, а для следующего - нет, он выбирает тот в последнем выполнении, а не передает его как ноль и получает его из кода.
@Component
@StepScope
public class SalesforceAdvertiserLoadTasklet implements Tasklet {
@Value("#{jobParameters['last_modified_date']}")
protected Date lastModifiedDate;
private static final Logger logger =
LoggerFactory.getLogger(SalesforceAdvertiserLoadTasklet.class);
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext)
throws Exception {
if(lastModifiedDate == null) {
lastModifiedDate =
Date.from(LocalDate.now().minusDays(1).atStartOfDay(ZoneId.systemDefault()).toInstant());
}
logger.info("In Method: runSalesforceAdvertiserLoadJob launch started on last_modified_date {}",
lastModifiedDate);
logger.info("Getting advertisers from SalesForce");
try {
getAdvertisersFromSalesforceAndAddtoDb();
} catch (JsonSyntaxException | IOException | ParseException e) {
logger.error("ERROR--> {}", e.getMessage());
}
return RepeatStatus.FINISHED;
}
@Bean
public JobParametersIncrementer runIdIncrementor() {
return new RunIdIncrementer();
}
@Bean
public Job salesforceAdvertiserLoadJob() {
return jobBuilderFactory.get(SalesforceJobName.salesforceAdvertiserLoadJob.name())
.incrementer(runIdIncrementor())
.listener(batchJobsExecutionListener)
.start(stepsConfiguration.salesforceAdvertiserLoadStep()).build();
}
Можно ли как-то помешать новому экземпляру задания получать параметры из предыдущего экземпляра задания?