Spring-batch-architecture
Spring Batch-アーキテクチャ
以下は、Spring Batchのアーキテクチャを図で表したものです。 図に示すように、アーキテクチャには3つの主要コンポーネント、つまり*アプリケーション、バッチコア*、および*バッチインフラストラクチャ*が含まれています。
アプリケーション-このコンポーネントには、すべてのジョブと、Spring Batchフレームワークを使用して記述したコードが含まれています。
*Batch Core* -このコンポーネントには、バッチジョブの制御と起動に必要なすべてのAPIクラスが含まれています。
バッチインフラストラクチャ-このコンポーネントには、アプリケーションコンポーネントとバッチコアコンポーネントの両方で使用されるリーダー、ライター、およびサービスが含まれています。
Spring Batchのコンポーネント
次の図は、Spring Batchのさまざまなコンポーネントと、それらが互いにどのように接続されているかを示しています。
Job
Spring Batchアプリケーションでは、ジョブは実行されるバッチプロセスです。 中断することなく、最初から最後まで実行されます。 このジョブはさらにステップに分割されます(またはジョブにはステップが含まれます)。
XMLファイルまたはJavaクラスを使用して、Spring Batchでジョブを構成します。 次に、Spring BatchのジョブのXML設定を示します。
<job id = "jobid">
<step id = "step1" next = "step2"/>
<step id = "step2" next = "step3"/>
<step id = "step3"/>
</job>
バッチジョブは、タグ<job> </job>内で構成されます。 id という名前の属性があります。 これらのタグ内で、ステップの定義と順序を定義します。
再起動可能-一般に、ジョブが実行されているときに、再起動しようとすると、再起動*と見なされ、再起動されます。 これを回避するには、以下に示すように *restartable 値を false に設定する必要があります。
<job id = "jobid" restartable = "false" >
</job>
Step
- ステップ*は、ジョブを定義および実行するために必要な情報(その部分)を含むジョブの独立した部分です。
図で指定されているように、各ステップはItemReader、ItemProcessor(オプション)、ItemWriterで構成されています。 ジョブには1つ以上のステップが含まれる場合があります。
リーダー、ライター、およびプロセッサー
- itemリーダー*は特定のソースからSpring Batchアプリケーションにデータを読み込みますが、 item writer はSpring Batchアプリケーションから特定の宛先にデータを書き込みます。
アイテムプロセッサ*は、スプリングバッチに読み込まれたデータを処理する処理コードを含むクラスです。 アプリケーションが *"n" レコードを読み取る場合、プロセッサ内のコードは各レコードで実行されます。
リーダーとライターが指定されていない場合、 tasklet はSpringBatchのプロセッサとして機能します。 単一のタスクのみを処理します。 たとえば、MySQLデータベースからデータを読み取り、それを処理してファイル(フラット)に書き込む単純なステップを含むジョブを作成する場合、ステップは次を使用します-
- MySQLデータベースから読み取る*リーダー*。
- フラットファイルに書き込む*ライター*。
- 希望どおりにデータを処理する*カスタムプロセッサ*。
<job id = "helloWorldJob">
<step id = "step1">
<tasklet>
<chunk reader = "mysqlReader" writer = "fileWriter"
processor = "CustomitemProcessor" ></chunk>
</tasklet>
</step>
</job>
Spring Batchは readers と writers の長いリストを提供します。 これらの事前定義されたクラスを使用して、それらのBeanを定義できます。 *読者*と*作家*については、今後の章で詳しく説明します。
JobRepository
Spring Batchのジョブリポジトリは、JobLauncher、Job、およびStepの実装にCreate、Retrieve、Update、Delete(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"/>
インメモリリポジトリ-Spring Batchのドメインオブジェクトをデータベースに保持したくない場合は、以下に示すようにjobRepositoryのインメモリバージョンを設定できます。
<bean id = "jobRepository"
class = "org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean ">
<property name = "transactionManager" ref = "transactionManager"/>
</bean>
JobLauncher
JobLauncherは、指定されたパラメーターセット*でSpring Batchジョブを起動するインターフェイスです。 *SampleJoblauncher は、 JobLauncher インターフェイスを実装するクラスです。 JobLauncherの構成は次のとおりです。
<bean id = "jobLauncher"
class = "org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name = "jobRepository" ref = "jobRepository"/>
</bean>
JobInstance
*JobInstance* はジョブの論理的な実行を表します。ジョブを実行すると作成されます。 各ジョブインスタンスは、ジョブの名前と実行中に渡されるパラメーターによって区別されます。
JobInstanceの実行が失敗した場合、同じJobInstanceを再度実行できます。 したがって、各JobInstanceは複数のジョブを実行できます。
JobExecutionおよびStepExecution
JobExecutionとStepExecutionは、ジョブ/ステップの実行の表現です。 これらには、開始時刻(ジョブ/ステップの)、終了時刻(ジョブ/ステップの)などのジョブ/ステップの実行情報が含まれます。