SpringBatch-アーキテクチャ

以下は、SpringBatchのアーキテクチャーの図式表現です。図に示されているように、アーキテクチャには3つの主要なコンポーネントが含まれています。Application, Batch Core、および Batch Infrastructure

Application −このコンポーネントには、SpringBatchフレームワークを使用して記述したすべてのジョブとコードが含まれています。

Batch Core −このコンポーネントには、バッチジョブを制御および起動するために必要なすべてのAPIクラスが含まれています。

Batch Infrastructure −このコンポーネントには、アプリケーションとバッチコアコンポーネントの両方で使用されるリーダー、ライター、およびサービスが含まれています。

SpringBatchのコンポーネント

次の図は、Spring Batchのさまざまなコンポーネントと、それらがどのように相互に接続されているかを示しています。

ジョブ

Spring Batchアプリケーションでは、ジョブは実行されるバッチプロセスです。中断することなく最初から最後まで実行されます。このジョブはさらにステップに分割されます(またはジョブにステップが含まれます)。

XMLファイルまたはJavaクラスを使用してSpringBatchでジョブを構成します。以下は、SpringBatchでのジョブのXML構成です。

<job id = "jobid"> 
   <step id = "step1" next = "step2"/> 
   <step id = "step2" next = "step3"/> 
   <step id = "step3"/> 
</job>

バッチジョブは、タグ<job> </ job>内で構成されます。名前の付いた属性がありますid。これらのタグ内で、ステップの定義と順序を定義します。

Restartable −一般に、ジョブが実行されているときに、ジョブを再開しようとすると、次のように見なされます。 restartそしてそれは再び開始されます。これを回避するには、を設定する必要がありますrestartable の値 false 以下に示すように。

<job id = "jobid" restartable = "false" >

</job>

ステップ

A step ジョブの独立した部分であり、ジョブを定義および実行するために必要な情報が含まれています(その部分)。

図で指定されているように、各ステップはItemReader、ItemProcessor(オプション)、およびItemWriterで構成されています。 A job may contain one or more steps

リーダー、ライター、およびプロセッサー

アン item reader 特定のソースからSpringBatchアプリケーションにデータを読み取りますが、 item writer SpringBatchアプリケーションから特定の宛先にデータを書き込みます。

アン Item processorSpringBatchに読み込まれたデータを処理する処理コードを含むクラスです。アプリケーションが"n" レコードの場合、プロセッサのコードは各レコードで実行されます。

リーダーとライターが指定されていない場合、 taskletSpringBatchのプロセッサとして機能します。単一のタスクのみを処理します。たとえば、MySQLデータベースからデータを読み取り、それを処理してファイルに書き込む(フラット)という単純なステップを含むジョブを作成している場合、このステップでは-を使用します。

  • A reader これはMySQLデータベースから読み取ります。

  • A writer フラットファイルに書き込みます。

  • A custom processor これは私たちの望み通りにデータを処理します。

<job id = "helloWorldJob"> 
   <step id = "step1"> 
      <tasklet> 
         <chunk reader = "mysqlReader" writer = "fileWriter" 
            processor = "CustomitemProcessor" ></chunk> 
      </tasklet> 
   </step> 
</ job>

SpringBatchはの長いリストを提供します readers そして writers。これらの事前定義されたクラスを使用して、それらのBeanを定義できます。私たちは議論する予定ですreaders そして writers これについては、次の章で詳しく説明します。

JobRepository

Spring Batchのジョブリポジトリは、JobLauncher、Job、およびStep実装の作成、取得、更新、および削除(CRUD)操作を提供します。以下に示すように、XMLファイルでジョブリポジトリを定義します。

<job-repository id = "jobRepository"/>

に加えて id、利用可能ないくつかのオプション(オプション)があります。以下は、すべてのオプションとそのデフォルト値を使用したジョブリポジトリの構成です。

<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 − Spring Batchのドメインオブジェクトをデータベースに永続化したくない場合は、以下に示すように、メモリ内バージョンのjobRepositoryを構成できます。

<bean id = "jobRepository" 
   class = "org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean ">
   <property name = "transactionManager" ref = "transactionManager"/>
</bean>

JobLauncher

JobLauncherは、SpringBatchジョブを起動するインターフェイスです。 given set of parametersSampleJoblauncher を実装するクラスです JobLauncherインターフェース。以下は、JobLauncherの構成です。

<bean id = "jobLauncher" 
   class = "org.springframework.batch.core.launch.support.SimpleJobLauncher"> 
   <property name = "jobRepository" ref = "jobRepository" /> 
</bean>

JobInstance

A JobInstanceジョブの論理実行を表します。ジョブを実行すると作成されます。各ジョブインスタンスは、ジョブの名前と実行中に渡されるパラメータによって区別されます。

JobInstanceの実行が失敗した場合、同じJobInstanceを再度実行できます。したがって、各JobInstanceは複数のジョブを実行できます。

JobExecutionとStepExecution

JobExecutionとStepExecutionは、ジョブ/ステップの実行を表しています。これらには、(ジョブ/ステップの)開始時間、(ジョブ/ステップの)終了時間などのジョブ/ステップの実行情報が含まれています。