Spring Batch读取器,写入器和处理器
项目读取器将数据从特定源代码读入Spring批处理应用程序,而项目写入器将数据从Spring Batch应用程序写入特定目标。
Item处理器是一个包含处理代码的类,该代码处理读入spring批处理的数据。 如果应用程序读取n
条记录,则处理器中的代码将在每条记录上执行。
块(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,flatfile,CSV等各种文件系统/数据库的数据。
要在应用程序中包含读取器,需要为该读取器定义一个bean,为该bean中的所有必需属性提供值,并将该bean的id作为值传递给chunk
元素的readers
属性(或writer
属性)。
ItemReader" class="reference-link">ItemReader
它是读取数据的一个步骤(批处理过程)的实体。 ItemReader
每次读取一个项目。 Spring Batch提供了一个ItemReader接口。 所有的读者都实现这个接口。
以下是由Spring Batch提供的一些预定义的ItemReader
类,用于从各种源读取。
读取器 | 目的 |
---|---|
FlatFIleItemReader |
从文件中读取数据。 |
StaxEventItemReader |
从XML文件读取数据。 |
StoredProcedureItemReader |
从数据库的存储过程读取数据。 |
JDBCPagingItemReader |
从关系数据库中读取数据。 |
MongoItemReader |
从MongoDB读取数据。 |
Neo4jItemReader |
从Neo4j读取数据。 |
需要通过创建bean来配置ItemReaders。 以下是从XML文件读取数据的StaxEventItemReader
示例。
<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" class="reference-link">ItemWriter
这是写入数据的批处理步骤的要素。 ItemWriter
一次写入一个项目。 Spring Batch提供了一个ItemWriter接口。 所有的作家都实现了这个接口。
以下是由Spring Batch提供的一些预定义的ItemWriter
类,用于从各种源读取。
写入器 | 目的 |
---|---|
FlatFIleItemWriter |
将数据写入文件。 |
StaxEventItemWriter |
将数据写入XML文件 |
StoredProcedureItemWriter |
将数据写入数据库的存储过程。 |
JDBCPagingItemWriter |
将数据写入关系数据库数据库。 |
MongoItemWriter |
将数据写入MongoDB。 |
Neo4jItemWriter |
将数据写入Neo4j。 |
同样,需要通过创建bean来配置ItemWriters
。 以下是将数据写入MySQL数据库的JdbcCursorItemReader
示例。
<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>
项目处理器" class="reference-link">项目处理器
ItemProcessor:ItemProcessor
用于处理数据。 当给定的项目无效时,它返回null
,否则它处理给定的项目并返回处理结果。 接口ItemProcessor <I,O>
表示处理器。
Tasklet类 - 当没有给出读写器时,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; } }
上一篇:Spring Batch配置
下一篇:Spring Batch入门程序
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
扫描二维码
程序员编程王