Exemple de lot de printemps - Fichier CSV dans la base de données MySQL

Exemple Spring Batch - Fichier CSV vers une base de données MySQL

Dans ce didacticiel, nous allons vous montrer comment configurer une tâche Spring Batch pour lire les données d'un fichier CSV dans une base de données.

Outils et bibliothèques utilisés:

  1. Maven 3

  2. Eclipse 4.2

  3. JDK 1.6

  4. Spring Core 3.2.2.RELEASE

  5. Spring Batch 2.2.0.RELEASE

  6. Pilote Java MySQL 5.1.25

1. Projet Java

Créer un projet Java avec Maven

$ mvn archetype:generate -DgroupId=com.example -DartifactId=SpringBatchExample
  -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Convertissez en projet Eclipse et importez-le dans Eclipse IDE.

$ cd SpringBatchExample/
$ mvn eclipse:eclipse

2. Dépendances du projet

Déclare toutes les dépendances de projet enpom.xml.

pom.xml


    4.0.0
    com.example
    SpringBatchExample
    jar
    1.0-SNAPSHOT
    SpringBatchExample
    http://maven.apache.org

    
        1.6
        3.2.2.RELEASE
        2.2.0.RELEASE
        5.1.25
    

    

        
        
            org.springframework
            spring-core
            ${spring.version}
        

        
        
            org.springframework
            spring-jdbc
            ${spring.version}
        

        
        
            org.springframework.batch
            spring-batch-core
            ${spring.batch.version}
        
        
            org.springframework.batch
            spring-batch-infrastructure
            ${spring.batch.version}
        

        
        
            mysql
            mysql-connector-java
            ${mysql.driver.version}
        

    
    
        spring-batch
        
          
            org.apache.maven.plugins
            maven-eclipse-plugin
            2.9
            
                true
                false
            
          
          
            org.apache.maven.plugins
            maven-compiler-plugin
            2.3.2
            
                ${jdk.version}
                ${jdk.version}
            
          
        
    

3. Structure du répertoire du projet

Passez en revue la structure finale du projet.

spring-batch-csv-database-project-structure

4. Fichier CSV

Il s'agit du fichier csv dans le dossier de ressources.

report.csv

Date,Impressions,Clicks,Earning
6/1/13,"139,237",37,227.21
6/2/13,"149,582",55,234.71
6/3/13,"457,425",132,211.48
6/4/13,"466,870",141,298.40
6/5/13,"472,385",194,281.35
......

5. Base de données MySQL

Définit un bean «dataSource» pour la base de données MySQL. Lejdbc:initialize-database est utilisé pour créer automatiquement les tables de métadonnées, Spring Batch en a besoin pour stocker les détails du travail.

resources/spring/batch/config/database.xml



  
  
    
    
    
    
  

  

  
  
    
    
  

6. Réglage de base du lot de printemps

DéfinitjobRepository etjobLauncher.

resources/spring/batch/config/context.xml



  
  
    
    
    
  

  
  

  
    
  

7. Emplois Spring Batch

Il s'agit du fichier XML principal pour configurer le travail par lots Spring. Ce fichierjob-report.xml définit un travail pour lire un fichierreport.csv, le faire correspondre au pojo simple dereport et écrire les données dans la base de données MySQL.

Lisez le commentaire, il devrait être explicite. Btw, n'oubliez pas de créer la table «RAW_REPORT» manuellement.

resources/spring/batch/jobs/job-report.xml



  

  
    
      
        
        
      
    
  

  

    
    

    
        
          
          
                
                
            
          
          
                 
                 
              
              
                
              
          

          
      

  

  
    
    
      
            
      
    
    
    
        
    
  

com/example/model/Report.java

package com.example.model;

public class Report {

    private String Date;
    private String Impressions;
    private String Clicks;
    private String Earning;

    //getter and setter methods


}

Note
Pour une explication détaillée, veuillez vous référer à ceSpring batch references.

8. Exécuter

Charge tout et l'exécutejobLauncher. C'est le moyen le plus simple de le démarrer et de le tester, mais, dans la vraie vie, vous devrez peut-être le lancer avec des frameworks de planificateur comme Spring task, Quartz ou un planificateur système comme la commande «cron» (je vous montrerai dans les prochains tutoriels).

com/example/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) {

    String[] springConfig  =
        {   "spring/batch/config/database.xml",
            "spring/batch/config/context.xml",
            "spring/batch/jobs/job-report.xml"
        };

    ApplicationContext context =
        new ClassPathXmlApplicationContext(springConfig);

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

    try {

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

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

    System.out.println("Done");

  }
}

Production. Les tables de métadonnées Spring Batch sont créées et le contenu dereport.cvs est inséré dans la table de base de données «RAW_REPORT».

spring-batch-cvs-database-data

Terminé.

Télécharger le code source

Téléchargez-le -SpringBatch-CSV-Database-Example.zip (18 ko)