项目阅读器从特定来源将数据读入弹出批处理应用程序,而项目编写器将数据从Spring Batch应用程序写入特定目的地.
项目处理器是一个类,其中包含处理读入弹簧批次的数据的处理代码.如果应用程序读取n条记录,则处理器中的代码将在每条记录上执行.
块是 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,flatfile,CSV等.
要在您的应用程序中包含一个阅读器,您需要为该阅读器定义一个bean,为bean中的所有必需属性提供值,并传递 id 这样的bean作为块元素读者的属性的值(对于 writer 相同).
它是读取数据的步骤(批处理过程)的实体. ItemReader一次读取一个项目. Spring Batch提供了一个接口 ItemReader .所有读者都实现了这个界面.
以下是Spring Batch提供的一些预定义的ItemReader类,可以从各种来源读取.
Reader | 目的 |
---|---|
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>
正如所观察到的,在配置时,我们需要指定所需阅读器的相应类名,我们需要为所有必需属性提供值.
这是写入数据的批处理的步骤的元素. ItemWriter一次写入一个项目. Spring Batch提供了一个接口 ItemWriter .所有作者都实现了这个接口.
以下是Spring Batch提供的一些预定义的ItemWriter类,可以从各种来源读取.
作家 | 目的 |
---|---|
FlatFIleItemWriter | 将数据写入平面文件. |
StaxEventItemWriter | 将数据写入XML文件. |
StoredProcedureItemWriter | 将数据写入数据库的存储过程. |
JDBCPagingItemWriter | 将数据写入关系数据库数据库. |
MongoItemWriter | 写入数据到MongoDB. |
Neo4jItemWriter | 将数据写入Neo4j. |
同样,我们需要通过创建bean来配置ItemWriters.以下是 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类 : 当没有给出 reader 和 writer 时,Tasklet充当SpringBatch的处理器.它只处理单个任务.
我们可以通过实现包 org.springframework.batch.item的接口 ItemProcessor 来定义自定义项处理器. 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; } }