データの流れをコンソールに表示
バージョン 5.0.2
SimpleReader
@Component
public class SimpleReader implements ItemReader<String> {
// 流すデータ
private List<String> dataList = new ArrayList<>(Arrays.asList("Data01", "Data02", "Data03"));
@Override
public String read() {
// nullが返ったら読み込みが終了する
if (!dataList.isEmpty()) {
String s = dataList.remove(0);
System.out.println("Read : " + s);
return s;
}
return null;
}
}
SimpleProcessor
@Component
public class SimpleProcessor implements ItemProcessor<String, String> {
// readしたデータが流れてくる
@Override
public String process(String item) {
item = "processed - " + item;
return item;
}
}
SimpleWriter
@Component
public class SimpleWriter implements ItemWriter<String> {
@Override
public void write(Chunk<? extends String> chunk) throws Exception {
// processorで加工したデータを表示
System.out.println(chunk.getItems());
}
}
Task
@Component
public class Task implements Tasklet {
// Taskletの呼び出しサンプル
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
System.out.println("call tasklet");
return RepeatStatus.FINISHED;
}
}
SimpleLitener
// インターセプトアノテーションの使用メモ
@Component
public class SimpleLitener {
@BeforeStep
public void beforeStep(StepExecution stepExecution) {
System.out.println("BeforeStep : " + stepExecution.getStepName());
}
@AfterStep
public void afterStep(StepExecution stepExecution) {
System.out.println("AfterStep : " + stepExecution.getStepName());
}
}
実行結果(※コンソール出力箇所抜粋)
call tasklet
BeforeStep : step1
Read : Data01
[processed - Data01]
Read : Data02
[processed - Data02]
Read : Data03
[processed - Data03]
AfterStep : step1
BeforeStep : step2
Read : Data04
[processed - Data04]
Read : Data05
[processed - Data05]
Read : Data06
[processed - Data06]
AfterStep : step2
その他関連ファイル
BatchConfiguration.java
@AllArgsConstructor
@Configuration
public class BatchConfiguration {
private JobRepository jobRepository;
private PlatformTransactionManager transactionManager;
private SimpleReader reader;
private SimpleReader2 reader2;
private SimpleProcessor processor;
private SimpleWriter writer;
private SimpleLitener listener;
@Bean
Job sampleJob(Step step1, Step step2, Step taskStep) {
return new JobBuilder("sampleJob", jobRepository)
.incrementer(new RunIdIncrementer())
.flow(taskStep)
.next(step1)
.next(step2)
.end()
.build();
}
@Bean
Step taskStep(Task tasklet) {
return new StepBuilder("taskStep", jobRepository)
.tasklet(tasklet, transactionManager)
.build();
}
@Bean
Step step1() {
return new StepBuilder("step1", jobRepository)
.<String, String> chunk(1, transactionManager)
.listener(listener)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
@Bean
Step step2() {
return new StepBuilder("step2", jobRepository)
.<String, String> chunk(1, transactionManager)
.listener(listener)
.reader(reader2)
.processor(processor)
.writer(writer)
.build();
}
}
SimpleReader2(Step2用のコピペ)
@Component
public class SimpleReader2 implements ItemReader<String> {
private List<String> dataList = new ArrayList<>(Arrays.asList("Data04", "Data05", "Data06"));
@Override
public String read() {
if (!dataList.isEmpty()) {
String s = dataList.remove(0);
System.out.println("Read : " + s);
return s;
}
return null;
}
}