SpringBatchシンプルな動きだけするサンプル

データの流れをコンソールに表示
バージョン 5.0.2
``` java: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;
	}
}
```

``` java:SimpleProcessor
@Component
public class SimpleProcessor implements ItemProcessor<String, String> {

    // readしたデータが流れてくる
	@Override
	public String process(String item) {
		item = "processed - " + item;
		return item;
	}

}
```

``` java:SimpleWriter
@Component
public class SimpleWriter implements ItemWriter<String> {

	@Override
	public void write(Chunk<? extends String> chunk) throws Exception {
        // processorで加工したデータを表示
		System.out.println(chunk.getItems());
	}

}

```

``` java: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;
	}

}
```

``` java: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());
	}

}
```

```batch:実行結果（※コンソール出力箇所抜粋）
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
```


その他関連ファイル

```java: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();
	}

}

```

```java: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;
	}

}
```