我有一个 Spring Batch 配置。
@Bean(BatchJobConstant.WITHDRAW_BATCH_JOB)
public Job importJob(@Qualifier(BatchJobConstant.CUSTOM_READER) CustomListItemReader<WithdrawDetails> reader,
@Qualifier(BatchJobConstant.CUSTOM_WRITER) ItemWriter<WithdrawDetails> writer,
@Qualifier(BatchJobConstant.CUSTOM_PROCESSOR) ItemProcessor<WithdrawDetails,
WithdrawDetails> processor,
@Qualifier(BatchJobConstant.POOL_TASK_EXECUTOR) TaskExecutor taskExecutor) {
final Step writeToDatabase = stepBuilderFactory.get(BatchJobConstant.WITHDRAW_BATCH_STEP)
.<WithdrawDetails, WithdrawDetails>chunk(chunkSize)
.reader(reader)
.processor(processor)
.writer(writer)
.transactionManager(transactionManager)
.taskExecutor(taskExecutor)
.throttleLimit(throttleLimit)
.build();
return jobBuilderFactory.get(BatchJobConstant.WITHDRAW_JOB_BUILDER_FACTORY)
.incrementer(new RunIdIncrementer())
.start(writeToDatabase)
.build();
}
Run Code Online (Sandbox Code Playgroud)
自定义阅读器如下:
public class CustomListItemReader<T> implements ItemReader<T> {
private List<T> list;
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
log.debug("Set list of size {}", list.size());
if (AopUtils.isAopProxy(list)) {
this.list = list;
} else {
this.list …Run Code Online (Sandbox Code Playgroud)