Spring Batch - Architektur
Es folgt die schematische Darstellung der Architektur von Spring Batch. Wie in der Figur dargestellt, enthält die Architektur drei Hauptkomponenten, nämlichApplication, Batch Core, und Batch Infrastructure.
Application - Diese Komponente enthält alle Jobs und den Code, den wir mit dem Spring Batch-Framework schreiben.
Batch Core - Diese Komponente enthält alle API-Klassen, die zum Steuern und Starten eines Stapeljobs erforderlich sind.
Batch Infrastructure - Diese Komponente enthält die Reader, Writer und Services, die sowohl von Anwendungs- als auch von Batch-Kernkomponenten verwendet werden.
Komponenten von Spring Batch
Die folgende Abbildung zeigt die verschiedenen Komponenten von Spring Batch und wie sie miteinander verbunden sind.
Job
In einer Spring Batch-Anwendung ist ein Job der Batch-Prozess, der ausgeführt werden soll. Es läuft von Anfang bis Ende ohne Unterbrechung. Dieser Job ist weiter in Schritte unterteilt (oder ein Job enthält Schritte).
Wir werden einen Job in Spring Batch mithilfe einer XML-Datei oder einer Java-Klasse konfigurieren. Im Folgenden finden Sie die XML-Konfiguration eines Jobs in Spring Batch.
<job id = "jobid">
<step id = "step1" next = "step2"/>
<step id = "step2" next = "step3"/>
<step id = "step3"/>
</job>
Ein Stapeljob wird innerhalb der Tags <job> </ job> konfiguriert. Es hat ein Attribut namensid. Innerhalb dieser Tags definieren wir die Definition und Reihenfolge der Schritte.
Restartable - Im Allgemeinen, wenn ein Job ausgeführt wird und wir versuchen, ihn erneut zu starten, gilt dies als restartund es wird wieder gestartet. Um dies zu vermeiden, müssen Sie die einstellenrestartable Wert zu false Wie nachfolgend dargestellt.
<job id = "jobid" restartable = "false" >
</job>
Schritt
EIN step ist ein unabhängiger Teil eines Jobs, der die erforderlichen Informationen zum Definieren und Ausführen des Jobs (seines Teils) enthält.
Wie im Diagramm angegeben, besteht jeder Schritt aus einem ItemReader, einem ItemProcessor (optional) und einem ItemWriter. A job may contain one or more steps.
Leser, Autoren und Prozessoren
Ein item reader liest Daten aus einer bestimmten Quelle in eine Spring Batch-Anwendung, während ein item writer schreibt Daten aus der Spring Batch-Anwendung an ein bestimmtes Ziel.
Ein Item processorist eine Klasse, die den Verarbeitungscode enthält, der die in den Federstapel eingelesenen Daten verarbeitet. Wenn die Anwendung liest"n" Datensätze, dann wird der Code im Prozessor für jeden Datensatz ausgeführt.
Wenn kein Leser und kein Schriftsteller angegeben sind, a taskletfungiert als Prozessor für SpringBatch. Es verarbeitet nur eine einzige Aufgabe. Wenn wir beispielsweise einen Job mit einem einfachen Schritt darin schreiben, in dem wir Daten aus der MySQL-Datenbank lesen, verarbeiten und in eine Datei (flach) schreiben, verwendet unser Schritt:
EIN reader welches aus der MySQL-Datenbank liest.
EIN writer das schreibt in eine flache Datei.
EIN custom processor welches die Daten nach unserem Wunsch verarbeitet.
<job id = "helloWorldJob">
<step id = "step1">
<tasklet>
<chunk reader = "mysqlReader" writer = "fileWriter"
processor = "CustomitemProcessor" ></chunk>
</tasklet>
</step>
</ job>
Spring Batch bietet eine lange Liste von readers und writers. Mit diesen vordefinierten Klassen können wir Beans für sie definieren. Wir werden diskutierenreaders und writers detaillierter in den kommenden Kapiteln.
JobRepository
Ein Job-Repository in Spring Batch bietet CRUD-Vorgänge (Create, Retrieve, Update and Delete) für die Implementierungen JobLauncher, Job und Step. Wir definieren ein Job-Repository in einer XML-Datei wie unten gezeigt.
<job-repository id = "jobRepository"/>
Zusätzlich zu idEs stehen einige weitere Optionen (optional) zur Verfügung. Im Folgenden finden Sie die Konfiguration des Job-Repositorys mit allen Optionen und ihren Standardwerten.
<job-repository id = "jobRepository"
data-source = "dataSource"
transaction-manager = "transactionManager"
isolation-level-for-create = "SERIALIZABLE"
table-prefix = "BATCH_"
max-varchar-length = "1000"/>
In-Memory Repository - Falls Sie die Domänenobjekte des Spring Batch in der Datenbank nicht beibehalten möchten, können Sie die speicherinterne Version des jobRepository wie unten gezeigt konfigurieren.
<bean id = "jobRepository"
class = "org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean ">
<property name = "transactionManager" ref = "transactionManager"/>
</bean>
JobLauncher
JobLauncher ist eine Schnittstelle, die den Spring Batch-Job mit dem startet given set of parameters. SampleJoblauncher ist die Klasse, die das implementiert JobLauncherSchnittstelle. Es folgt die Konfiguration des JobLauncher.
<bean id = "jobLauncher"
class = "org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name = "jobRepository" ref = "jobRepository" />
</bean>
JobInstance
EIN JobInstancestellt den logischen Lauf eines Jobs dar; Es wird erstellt, wenn wir einen Job ausführen. Jede Jobinstanz unterscheidet sich durch den Namen des Jobs und die Parameter, die während der Ausführung an ihn übergeben werden.
Wenn eine JobInstance-Ausführung fehlschlägt, kann dieselbe JobInstance erneut ausgeführt werden. Daher kann jede JobInstance mehrere Jobausführungen haben.
JobExecution und StepExecution
JobExecution und StepExecution sind die Darstellung der Ausführung eines Jobs / Schritts. Sie enthalten die Ausführungsinformationen des Jobs / Schritts wie Startzeit (von Job / Schritt), Endzeit (von Job / Schritt).