📜  Spring Batch-读者,作家和处理器

📅  最后修改于: 2020-11-11 06:50:10             🧑  作者: Mango


项目读取器从特定来源将数据读取到Spring Batch应用程序中,而项目写入器将数据从Spring Batch应用程序写入特定目标中。

物料处理器是一个类,其中包含处理代码,用于处理读入弹簧批处理的数据。如果应用程序读取了n条记录,则将在每条记录上执行处理器中的代码。

Tasklet的子元素。它用于执行读取,写入和处理操作。我们可以在如下所示的步骤中使用此元素配置读取器,写入器和处理器。

 
    
       
          
          
       
    

Spring Batch为读写器提供了从各种文件系统/数据库读取和写入数据的能力,例如MongoDB,Neo4j,MySQL,XML,flatfile,CSV等。

为了在应用程序中包含阅读器,您需要为该阅读器定义一个bean,为bean中所有必需的属性提供值,并将该bean的id作为值传递给块元素阅读器的属性(与作家)。

ItemReader

它是读取数据的(批处理过程)步骤的实体。 ItemReader一次读取一个项目。 Spring Batch提供了一个Interface ItemReader 。所有读者都实现此接口。

以下是Spring Batch提供的一些预定义的ItemReader类,可以从各种来源读取它们。

Reader Purpose
FlatFIleItemReader To read data from flat files.
StaxEventItemReader To read data from XML files.
StoredProcedureItemReader To read data from the stored procedures of a database.
JDBCPagingItemReader To read data from relational databases database.
MongoItemReader To read data from MongoDB.
Neo4jItemReader To read data from Neo4jItemReader.

我们需要通过创建bean来配置ItemReaders 。以下是StaxEventItemReader的示例,该示例从XML文件读取数据。

 
    
    
    
 

 
    
       
         Tutorial 
       
    
 

正如观察到的那样,在配置时,我们需要指定所需阅读器的相应类名,并且需要为所有必需属性提供值。

ItemWriter

这是批处理过程中写入数据的步骤的元素。 ItemWriter一次写入一个项目。 Spring Batch提供了一个Interface ItemWriter 。所有作者都实现此接口。

以下是Spring Batch提供的一些预定义的ItemWriter类,可以从各种来源读取它们。

Writer Purpose
FlatFIleItemWriter To write data into flat files.
StaxEventItemWriter To write data into XML files.
StoredProcedureItemWriter To write data into the stored procedures of a database.
JDBCPagingItemWriter To write data into relational databases database.
MongoItemWriter To write data into MongoDB.
Neo4jItemWriter To write data into Neo4j.

同样,我们需要通过创建bean来配置ItemWriters。以下是JdbcCursorItemReader的示例,该示例将数据写入MySQL数据库。


   
   
   
       
   

项目处理器

ItemProcessor :一个ItemProcessor用于处理数据。当给定项目无效时,它返回null ,否则它将处理给定项目并返回处理后的结果。接口ItemProcessor 表示处理器。

微进程类-当没有读取器写入器给出,一个微进程充当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 {  
   
   @Override 
   public Tutorial process(Tutorial item) throws Exception {  
      System.out.println("Processing..." + item); 
      return item; 
   } 
}