47. Spring Batchの簡単なサンプル:入力・出力itemクラス作成
public class InputItem {
private String data;
public InputItem(String data) {
this.data = data;
}
}
public class OutputItem {
private String data;
public OutputItem(String data) {
this.data = data;
}
}
※Setter/Getter省略
入力itemクラス: 出力itemクラス:
48. Spring Batchの簡単なサンプル:ItemReader作成
public class BatchItemReader implements ItemReader<InputItem> {
private static final Logger log = LoggerFactory.getLogger(BatchItemReader.class);
private static int count = 0;
@Override
public InputItem read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
log.info("called read method");
// 本当はここでデータをDBやファイルを読み取る
if (count++ > 1) {
return null; // データを読み終わったら、nullを返却すること
}
// 読み取ったデータを入力データクラスへ詰めて、返却
return new InputItem("data");
}
}
49. Spring Batchの簡単なサンプル:ItemProcessor作成
public class BatchItemProcessor implements ItemProcessor<InputItem, OutputItem> {
private static final Logger log = LoggerFactory.getLogger(BatchItemProcessor.class);
@Override
public OutputItem process(InputItem InputItem) throws Exception {
log.info("called process method");
// ここでデータのバリデーションチェックをやる
// 入力データを出力データへ変換する
OutputItem outputItem = new OutputItem(InputItem.getData().toUpperCase());
log.info("Input (" + InputItem + "), Output (" + outputItem + ")");
return outputItem;
}
}
50. Spring Batchの簡単なサンプル:ItemWriter作成
public class BatchItemWriter implements ItemWriter<OutputItem> {
private static final Logger log = LoggerFactory.getLogger(BatchItemWriter.class);
@Override
public void write(List<? extends OutputItem> items) throws Exception {
log.info("called write method");
// 本当はここでデータをDBやファイルへ出力する
log.info("Output (" + items + ")");
}
}
51. Spring Batchの簡単なサンプル:@Configuration・@EnableBatchProcessingのク
ラスを作成
@Configuration
@EnableBatchProcessing
public class BatchConfig {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Bean
public ItemReader<InputItem> reader() {
return new BatchItemReader();
}
@Bean
public ItemProcessor<InputItem, OutputItem> processor() {
return new BatchItemProcessor();
}
@Bean
public ItemWriter<OutputItem> writer() {
return new BatchItemWriter();
}
@Bean
public Step step1() {
return this.stepBuilderFactory.get("step1").<InputItem,
OutputItem>chunk(10).reader(reader())
.processor(processor()).writer(writer()).build();
}
@Bean
public Job runJob() {
return
this.jobBuilderFactory.get("runJob").start(step1()).build();
}
}
60. Spring Batchの簡単なサンプル:JobExecutionListener
@Component
public class JobListener implements JobExecutionListener {
private static final Logger log = LoggerFactory.getLogger(JobListener.class);
@Override
public void beforeJob(JobExecution jobExecution) {
// Jobを実行する前に実行する処理を書く
}
@Override
public void afterJob(JobExecution jobExecution) {
// Jobを実行した後に実行する処理を書く
if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
log.info("!!! JOB FINISHED! Time to verify the results");
}
}
}