tohnamanブログ

東村山に生息するWindows好きな太っちょオヤジプログラマのブログ

Spring Batch その7

今回もSpring Batch です。


今回は、csvファイルパスをジョブパラメータに変更する対応を行います。

修正前

public class Csv2dbJob01Config {

  /** CSVファイルパス */
  private static final String CSV_FILE_PATH = "D:/CsvData/13tokyo.csv";

  public Step csv2dbStep() {
        .reader(addressReader())
  }

  @Bean
  public FlatFileItemReader<AddressDto> addressReader() {
    FlatFileItemReader<AddressDto> reader = new FlatFileItemReader<>();
    reader.setResource(new FileSystemResource(CSV_FILE_PATH));

修正後

public class Csv2dbJob01Config {

  @Autowired
  private FlatFileItemReader<AddressDto> addressReader;

  public Step csv2dbStep() {
        .reader(addressReader)
  }

  @Bean
  @StepScope
  public FlatFileItemReader<AddressDto> addressReader(@Value("#{jobParameters['csvFilePath']}") String csvFilePath) {
    FlatFileItemReader<AddressDto> reader = new FlatFileItemReader<>();
    reader.setResource(new FileSystemResource(csvFilePath));

Spring Batchで提供している遅延バインディングを利用して、ジョブパラメータを取得するように修正

遅延バインディングを利用する為には、以下の2つが必要です

プレースホルダ経由とは、#{jobParameters['csvFilePath']} のことを指しています。
今回は、ジョブパラメータだったので #{jobParameters['名前']を利用しましたが、
ほかに、stepExecutionContext用の#{stepExecutionContext['名前']}、jobExecutionContext用の#{jobExecutionContext['名前']}が存在します。

実行

Spring Batch その5と同じようにSTSで実行する場合
メインタブ
 プロジェクト
  spring-batch-sample
 メイン・クラス
  org.springframework.batch.core.launch.support.CommandLineJobRunner
引数タブ
 プログラム引数
  jp.tokyo.higashimurayama.tohnaman.batch.jobs.csv2db.Csv2dbJob01Config csv2dbJob data=2017/01/28 num=1 csvFilePath=D:/CsvData/13tokyo.csv

赤字部分が修正箇所です。
実行前には、データを削除してから実行してください。


完成したモノをGitHubここ に置いています。

今回は、ここまで