SpringバッチMultiResourceItemReaderの例

Spring Batch MultiResourceItemReaderの例

このチュートリアルでは、複数のリソース(複数のcsvファイル)からアイテムを読み取り、アイテムを単一のcsvファイルに書き込む方法を示します。

使用するツールとライブラリ

  1. メーベン3

  2. Eclipse 4.2

  3. JDK 1.6

  4. Spring Core 3.2.2.RELEASE

  5. Spring Batch 2.2.0.RELEASE

P.S This example – 3 CSV files (reader) – combine into a single CSV file (writer).

1. プロジェクトのディレクトリ構造

最終的なプロジェクト構造、標準のMavenプロジェクトを確認します。

spring-batch-MultiResourceItemReader-example

2. 複数のCSVファイル

3つのcsvファイルがありますが、後でMultiResourceItemReaderを使用して1つずつ読み取ります。

csv/inputs/domain-1-3-2013.csv

1,facebook.com
2,yahoo.com
3,google.com

csv/inputs/domain-2-3-2013.csv

200,example.com
300,stackoverflow.com
400,oracle.com

csv/inputs/domain-3-3-2013.csv

999,eclipse.org
888,baidu.com

3. 春のバッチジョブ

このパターンcsv/inputs/domain-*.csvに一致するリソースを読み取り、それを単一のcvsファイルdomain.all.csvに書き込むジョブ。

resources/spring/batch/jobs/job-read-files.xml



  

  

  
    
    
        
    
    
  

  
    
    
  

  
    
      
        
            
                
            
        
        
            
                
            
        
      
    
  

  
    
    
    
      
        
        
          
            
          
        
      
    
  

resources/spring/batch/config/context.xml



    
    
    
    

    

    
    
    

4. それを実行します

Javaクラスを作成し、バッチジョブを実行します。

App.java

package com.example;

import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {

  public static void main(String[] args) {
    App obj = new App();
    obj.run();
  }

  private void run() {

    String[] springConfig = { "spring/batch/jobs/job-read-files.xml" };

    ApplicationContext context = new ClassPathXmlApplicationContext(springConfig);

    JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
    Job job = (Job) context.getBean("readMultiFileJob");

    try {

        JobExecution execution = jobLauncher.run(job, new JobParameters());
        System.out.println("Exit Status : " + execution.getStatus());

    } catch (Exception e) {
        e.printStackTrace();
    }

    System.out.println("Done");

  }

}

出力。 3つのcsvファイルのコンテンツが読み取られ、1つのcsvファイルに結合されます。

csv/outputs/domain.all.csv

1,facebook.com
2,yahoo.com
3,google.coms
200,example.com
300,stackoverflow.com
400,oracle.com
999,eclipse.org
888,baidu.com

ソースコードをダウンロード

ダウンロード–SpringBatch-MultiResourceItemReader-Example.zip(12 kb)