Spring Batch-リーダー、ライター、プロセッサー
アン Item Reader 特定のソースからSpringBatchアプリケーションにデータを読み込みますが、 Item Writer SpringBatchアプリケーションから特定の宛先にデータを書き込みます。
アン Item processorSpringBatchに読み込まれたデータを処理する処理コードを含むクラスです。アプリケーションがnレコードを読み取ると、プロセッサのコードが各レコードで実行されます。
A chunk の子要素です tasklet。これは、読み取り、書き込み、および処理操作を実行するために使用されます。以下に示す手順で、この要素を使用してリーダー、ライター、およびプロセッサーを構成できます。
<batch:job id = "helloWorldJob">
<batch:step id = "step1">
<batch:tasklet>
<batch:chunk reader = "cvsFileItemReader" writer = "xmlItemWriter"
processor = "itemProcessor" commit-interval = "10">
</batch:chunk>
</batch:tasklet>
</batch:step>
</batch:job>
Spring Batchは、MongoDB、Neo4j、MySQL、XML、フラットファイル、CSVなどのさまざまなファイルシステム/データベースからデータを読み書きするためのリーダーとライターを提供します。
アプリケーションにリーダーを含めるには、そのリーダーのBeanを定義し、Bean内の必要なすべてのプロパティに値を指定して、 id チャンク要素の属性への値としてのそのようなBeanの reader (同じ writer)。
ItemReader
これは、データを読み取る(バッチプロセスの)ステップのエンティティです。ItemReaderは、一度に1つのアイテムを読み取ります。SpringBatchはインターフェースを提供しますItemReader。全てのreaders このインターフェースを実装します。
以下は、さまざまなソースから読み取るためにSpringBatchによって提供される事前定義されたItemReaderクラスの一部です。
読者 | 目的 |
---|---|
FlatFIleItemReader | フラットファイルからデータを読み取るため。 |
StaxEventItemReader | XMLファイルからデータを読み取るため。 |
StoredProcedureItemReader | データベースのストアドプロシージャからデータを読み取ること。 |
JDBCPagingItemReader | リレーショナルデータベースデータベースからデータを読み取るため。 |
MongoItemReader | MongoDBからデータを読み取るため。 |
Neo4jItemReader | Neo4jItemReaderからデータを読み取るため。 |
を構成する必要があります ItemReaders豆を作成することによって。以下はの例ですStaxEventItemReader XMLファイルからデータを読み取ります。
<bean id = "mysqlItemWriter"
class = "org.springframework.batch.item.xml.StaxEventItemWriter">
<property name = "resource" value = "file:xml/outputs/userss.xml" />
<property name = "marshaller" ref = "reportMarshaller" />
<property name = "rootTagName" value = "Tutorial" />
</bean>
<bean id = "reportMarshaller"
class = "org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name = "classesToBeBound">
<list>
<value>Tutorial</value>
</list>
</property>
</bean>
観察されたように、構成中に、必要なリーダーのそれぞれのクラス名を指定する必要があり、必要なすべてのプロパティに値を提供する必要があります。
ItemWriter
それはの要素です stepデータを書き込むバッチプロセスの。ItemWriterは、一度に1つのアイテムを書き込みます。SpringBatchはインターフェースを提供しますItemWriter。すべてのライターがこのインターフェースを実装しています。
以下は、さまざまなソースから読み取るためにSpringBatchによって提供される事前定義されたItemWriterクラスの一部です。
作家 | 目的 |
---|---|
FlatFIleItemWriter | フラットファイルにデータを書き込むこと。 |
StaxEventItemWriter | XMLファイルにデータを書き込むこと。 |
StoredProcedureItemWriter | データベースのストアドプロシージャにデータを書き込むこと。 |
JDBCPagingItemWriter | リレーショナルデータベースデータベースにデータを書き込むこと。 |
MongoItemWriter | MongoDBにデータを書き込むため。 |
Neo4jItemWriter | Neo4jにデータを書き込むため。 |
同様に、Beanを作成してItemWriterを構成する必要があります。以下はの例ですJdbcCursorItemReader MySQLデータベースにデータを書き込みます。
<bean id = "dbItemReader"
class = "org.springframework.batch.item.database.JdbcCursorItemReader" scope = "step">
<property name = "dataSource" ref = "dataSource" />
<property name = "sql" value = "select * from tutorialsdata" />
<property name = "rowMapper">
<bean class = "TutorialRowMapper" />
</property>
</bean>
アイテムプロセッサ
ItemProcessor:ItemProcessorは、データを処理するために使用されます。指定されたアイテムが無効な場合は、null、それ以外の場合は、指定されたアイテムを処理し、処理された結果を返します。インターフェースItemProcessor<I,O> プロセッサを表します。
Tasklet class −いいえの場合 reader そして writer与えられると、タスクレットはSpringBatchのプロセッサとして機能します。単一のタスクのみを処理します。
インターフェイスを実装することで、カスタムアイテムプロセッサを定義できます ItemProcessor パッケージの org.springframework.batch.item.ItemProcessor。このItemProcessorクラスは、オブジェクトを受け入れてデータを処理し、処理されたデータを別のオブジェクトとして返します。
バッチプロセスでは、 "n"レコードまたはデータ要素が読み取られ、レコードごとに、データが読み取られて処理され、ライターにデータが書き込まれます。データを処理するために、渡されたプロセッサを中継します。
たとえば、特定のPDFドキュメントをロードし、新しいページを作成し、データ項目を表形式でPDFに書き込むコードを記述したとします。このアプリケーションを実行すると、XMLドキュメントからすべてのデータ項目が読み取られ、MySQLデータベースに保存され、指定されたPDFドキュメントの個々のページに出力されます。
例
以下は、ItemProcessorクラスのサンプルです。
import org.springframework.batch.item.ItemProcessor;
public class CustomItemProcessor implements ItemProcessor<Tutorial, Tutorial> {
@Override
public Tutorial process(Tutorial item) throws Exception {
System.out.println("Processing..." + item);
return item;
}
}