在Spring Batch中,如果你不想使用JOB_EXECUTION_PARAMS
,可以通过自定义JobParametersIncrementer
来实现。
首先,创建一个实现JobParametersIncrementer
接口的类,例如CustomJobParametersIncrementer
:
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.JobParametersIncrementer;
public class CustomJobParametersIncrementer implements JobParametersIncrementer {
@Override
public JobParameters getNext(JobParameters parameters) {
// 在这里自定义生成JobParameters的逻辑
return new JobParametersBuilder()
.addLong("timestamp", System.currentTimeMillis())
.toJobParameters();
}
}
然后,在你的Job
配置中使用该自定义的JobParametersIncrementer
:
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Bean
public JobParametersIncrementer customJobParametersIncrementer() {
return new CustomJobParametersIncrementer();
}
@Bean
public Job myJob() {
return jobBuilderFactory.get("myJob")
.incrementer(customJobParametersIncrementer()) // 使用自定义的JobParametersIncrementer
.flow(myStep())
.end()
.build();
}
@Bean
public Step myStep() {
return stepBuilderFactory.get("myStep")
.tasklet((stepContribution, chunkContext) -> {
// 在这里编写Step的逻辑
return RepeatStatus.FINISHED;
})
.build();
}
}
通过这种方式,你可以在每次运行Job
时动态生成不同的JobParameters
,而不需要使用JOB_EXECUTION_PARAMS
。
上一篇:不想要冗余,想要使用递归。
下一篇:不响应的边距