Java >> Java Tutorial >  >> Tag >> Spring

Spring Batch Tutorial:Schreiben von Informationen in eine XML-Datei

Im vorherigen Teil meines Spring Batch-Tutorials wurde beschrieben, wie Sie Informationen in eine CSV-Datei schreiben können. Dieses Mal lernen Sie, die Ausgabedaten Ihres Spring Batch-Jobs in eine XML-Datei zu schreiben. Nachdem Sie diesen Blogbeitrag gelesen haben, werden Sie:

  • Kann die Abhängigkeiten identifizieren, die erforderlich sind, wenn Sie die Ausgabedaten Ihres Batch-Jobs in eine XML-Datei schreiben möchten.
  • Kann die erforderlichen Abhängigkeiten mit Maven und Gradle erhalten.
  • Verstehen Sie, wie Sie einen ItemWriter konfigurieren können Bean, die die Ausgabedaten Ihres Batch-Jobs in eine XML-Datei schreibt.

Beginnen wir mit einem kurzen Blick auf Ihren Batch-Job.

Einführung in Ihren Batch-Job

Der Beispiel-Batch-Job dieses Blogbeitrags verarbeitet die Studenteninformationen eines Online-Kurses. Die Eingabedaten dieses Batch-Jobs werden aus einer Datenquelle gelesen und in StudentDTO umgewandelt Objekte. Die StudentDTO Klasse enthält die Informationen eines einzelnen Schülers und ihr Quellcode sieht wie folgt aus:

public class StudentDTO {
 
    private String emailAddress;
    private String name;
    private String purchasedPackage;
 
    public StudentDTO() {}
 
    public String getEmailAddress() {
        return emailAddress;
    }
 
    public String getName() {
        return name;
    }
 
    public String getPurchasedPackage() {
        return purchasedPackage;
    }
 
    public void setEmailAddress(String emailAddress) {
        this.emailAddress = emailAddress;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public void setPurchasedPackage(String purchasedPackage) {
        this.purchasedPackage = purchasedPackage;
    }
}

In diesem Blogbeitrag schreiben Sie die Ausgabedaten Ihres Batch-Jobs in eine XML-Datei. Genauer gesagt muss diese XML-Datei eine Schülerliste enthalten, die die folgenden Informationen von jedem Schüler enthält:

  • Der Name des Schülers.
  • Die E-Mail-Adresse des Kursteilnehmers.
  • Der Name des gekauften Pakets.

Nachdem Sie die Ausgabedaten in eine XML-Datei geschrieben haben, muss der Inhalt der Ausgabedatei wie folgt aussehen:

<?xml version="1.0" encoding="UTF-8"?>
<students>
    <student>
        <emailAddress>[email protected]</emailAddress>
        <name>Tony Tester</name>
        <purchasedPackage>master</purchasedPackage>
    </student>
    <student>
        <emailAddress>[email protected]</emailAddress>
        <name>Nick Newbie</name>
        <purchasedPackage>starter</purchasedPackage>
    </student>
    <student>
        <emailAddress>[email protected]</emailAddress>
        <name>Ian Intermediate</name>
        <purchasedPackage>intermediate</purchasedPackage>
    </student>
</students>

Als nächstes erfahren Sie, wie Sie mit Maven und Gradle die erforderlichen Abhängigkeiten erhalten.

Erforderliche Abhängigkeiten abrufen

Bevor Sie die Ausgabedaten Ihres Batch-Jobs in eine XML-Datei schreiben können, müssen Sie die folgenden Abhängigkeiten abrufen:

  • Die spring-oxm Abhängigkeit stellt die High-Level-API bereit, die Ihnen hilft, Objekte in XML-Dokumente zu serialisieren und XML-Dokumente in Objekte zu deserialisieren.
  • Die xstream Abhängigkeit ist eine Bibliothek, die Objekte in XML-Dokumente serialisieren und XML-Dokumente in Objekte deserialisieren kann. Es ist schnell und hat einen geringen Speicherverbrauch, weshalb es nützlich ist, wenn Sie mit Batch-Jobs arbeiten, die große Datenmengen verarbeiten.

Wenn Sie die Abhängigkeitsverwaltung von Spring Boot mit Maven verwenden, können Sie diese Abhängigkeiten erhalten, indem Sie die folgenden Abhängigkeitsdeklarationen zu dependencies hinzufügen Abschnitt Ihrer POM-Datei:

<dependency>
	<groupId>org.springframework</groupId>
 	<artifactId>spring-oxm</artifactId>
</dependency>
<dependency>
 	<groupId>com.thoughtworks.xstream</groupId>
 	<artifactId>xstream</artifactId>
 	<version>1.4.15</version>
</dependency>

Wenn Sie die Abhängigkeitsverwaltung von Spring Boot mit Gradle verwenden, können Sie diese Abhängigkeiten erhalten, indem Sie Ihrer build.gradle die folgenden Abhängigkeitsdeklarationen hinzufügen Datei:

dependencies {
    implementation(
            'org.springframework:spring-oxm',
            'com.thoughtworks.xstream:xstream:1.4.15'
    )
}

Als Nächstes lernen Sie, die Ausgabedaten Ihres Batch-Jobs in eine XML-Datei zu schreiben.

Schreiben von Informationen in eine XML-Datei

Wenn Sie die Ausgabedaten Ihres Batch-Jobs verarbeiten möchten, müssen Sie einen ItemWriter konfigurieren Bohne. Da Sie die Ausgabedaten in eine XML-Datei schreiben müssen, müssen Sie diese Bean folgendermaßen konfigurieren:

Zuerst müssen Sie die Konfigurationsklasse erstellen, die die Beans enthält, die den Workflow Ihres Spring Batch-Jobs beschreiben. Der Quellcode Ihrer Konfigurationsklasse sieht wie folgt aus:

import org.springframework.context.annotation.Configuration;
 
@Configuration
public class SpringBatchExampleJobConfig {
}

Zweiter müssen Sie die Methode erstellen, die Ihren ItemWriter konfiguriert Bohne. Stellen Sie sicher, dass die erstellte Methode einen Environment akzeptiert Objekt als Methodenparameter und gibt einen ItemWriter<StudentDTO> zurück Objekt.

Nachdem Sie diese Methode zu Ihrer Konfigurationsklasse hinzugefügt haben, sieht ihr Quellcode wie folgt aus:

import org.springframework.batch.item.ItemWriter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

@Configuration
public class SpringBatchExampleJobConfig {

    @Bean
    public ItemWriter<StudentDTO> itemWriter(Environment environment) {

    }
}

Dritter , müssen Sie den itemWriter() implementieren Methode, indem Sie diesen Schritten folgen:

  1. Erstellen Sie einen neuen StaxEventItemWriterBuilder<StudentDTO> Objekt. Dieses Objekt erstellt StaxEventItemWriter<StudentDTO> Objekte, die die Ausgabedaten Ihres Batch-Jobs in eine XML-Datei schreiben können.
  2. Konfigurieren Sie den Namen des ItemWriter .
  3. Konfigurieren Sie den Dateipfad der erstellten XML-Datei. Sie können diese Informationen aus einer Eigenschaftendatei lesen, indem Sie den Environment verwenden Objekt als Methodenparameter angegeben.
  4. Stellen Sie sicher, dass der erstellte ItemWriter erstellt das XML-Dokument mithilfe der XStream-Bibliothek. Denken Sie daran, sicherzustellen, dass student Das XML-Element enthält die Informationen eines einzelnen Schülers.
  5. Konfigurieren Sie den Namen des Root-Elements (students ).
  6. Erstellen Sie einen neuen StaxEventItemWriter<StudentDTO> Objekt und gibt das erstellte Objekt zurück.

Nachdem Sie den itemWriter() implementiert haben -Methode sieht der Quellcode Ihrer Konfigurationsklasse wie folgt aus:

import org.springframework.batch.item.ItemWriter;
import org.springframework.batch.item.xml.builder.StaxEventItemWriterBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.oxm.xstream.XStreamMarshaller;

import java.util.Collections;

@Configuration
public class SpringBatchExampleJobConfig {

    @Bean
    public ItemWriter<StudentDTO> itemWriter(Environment environment) {
        String exportFilePath = environment.getRequiredProperty(
                "batch.job.export.file.path"
        );
        Resource exportFileResource = new FileSystemResource(exportFilePath);

        XStreamMarshaller studentMarshaller = new XStreamMarshaller();
        studentMarshaller.setAliases(Collections.singletonMap(
                "student",
                StudentDTO.class
        ));

        return new StaxEventItemWriterBuilder<StudentDTO>()
                .name("studentWriter")
                .resource(exportFileResource)
                .marshaller(studentMarshaller)
                .rootTagName("students")
                .build();
    }
}

Sie können jetzt die erforderlichen Abhängigkeiten abrufen und einen ItemWriter konfigurieren Bean, die die Ausgabedaten Ihres Batch-Jobs in eine XML-Datei schreibt. Fassen wir zusammen, was Sie aus diesem Blogbeitrag gelernt haben.

Zusammenfassung

In dieser Lektion haben Sie vier Dinge gelernt:

  • Der spring-oxm Abhängigkeit stellt die High-Level-API bereit, die Ihnen hilft, Objekte in XML-Dokumente zu serialisieren und XML-Dokumente in Objekte zu deserialisieren.
  • Die xstream Abhängigkeit ist eine Bibliothek, die Objekte in XML serialisieren und XML-Dokumente in Objekte deserialisieren kann. Es ist schnell und hat einen geringen Speicherbedarf, weshalb es nützlich ist, wenn Sie mit Batch-Jobs arbeiten, die große Datenmengen verarbeiten.
  • Wenn Sie die Ausgabedaten Ihres Batch-Jobs in eine XML-Datei schreiben müssen, müssen Sie den StaxEventItemWriter<T> verwenden Klasse.
  • Die StaxEventItemWriter<T> -Klasse serialisiert Objekte in XML, indem sie einen Marshaller verwendet .

Der nächste Teil meines Spring Batch-Tutorials beschreibt, wie Sie die Ausgabedaten Ihres Batch-Jobs mithilfe von JDBC in eine relationale Datenbank schreiben können.


Java-Tag