Spring Batch(三) Job Launcher、ItemReader、ItemProcessor、ItemWriter各个实现类和用途

内容来自《Spring Batch 批处理框架》,作者:刘相。

1.JobLauncher

  JobLauncher(作业调度器)是SpringBatch框架提供的运行Job的能力。用过给定的JobName和JobParameters,可以通过JobLauncher执行Job。通过JobLauncher可以在Java程序中调用批处理任务,也可以在通过命令或者其他的框架(如定时调度框架Quartz)中调用批处理任务。

  JobLauncher接口:

public interface JobLauncher {
    public JobExecution run(Job job, JobParameters jobParameters) throws JobExecutionAlreadyRunningException,
           JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException;
}

  SpringBatch提供了JobLauncher的简单的实现了类:SimpleJobLauncher。

public class SimpleJobLauncher implements JobLauncher, InitializingBean {

    protected static final Log logger = LogFactory.getLog(SimpleJobLauncher.class);

    private JobRepository jobRepository;

    private TaskExecutor taskExecutor;
    @Override
    public JobExecution run(final Job job, final JobParameters jobParameters)
           throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException,
           JobParametersInvalidException {
          //逻辑处理
    }
    public void setJobRepository(JobRepository jobRepository) {
       this.jobRepository = jobRepository;
    }
    
    public void setTaskExecutor(TaskExecutor taskExecutor) {
       this.taskExecutor = taskExecutor;
    }
    
    @Override
    public void afterPropertiesSet() throws Exception {
       //逻辑处理
    }
}

2.ItemReader

  ItemReader是Step中对资源的读处理,SpringBatch框架提供了多种读的实现类共我们使用。

  IteamReader接口:

public interface ItemReader<T> {
    T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException;
}

  其实现类和介绍:

SpringBatch框架提供的ItemReader组件
ItemReader说明
ListItemReader读取List类型数据,只能读取一次
ItemReaderAdapterItemReader适配器,可以服用现有的读操作
FlatFileItemReader读Flat类型文件
StaxEventItemReader读XML类型的文件
JdbcCursorItemReader基于JDBC游标方式读取数据库
HibernateCursorItemReader基于Hibernate游标方式读取数据库
StoredProcedureItemReader基于存储过程读取数据库
IbatisPagingItemReader基于Ibatis分页读取数据库
JpaPagingItemReader基于Jpa方式分页读取数据库
JdbcPagingItemReader基于JDBC方式分页读取数据库
HibernatePagingItemReader基于Hibernate方式分页读取数据库
JmsItemReader读取JMS队列
IteratorItemReader迭代方式读组件
MultiResourceItemReader多文件读组件
MongoItemReader基于分布式文件存储的数据库MongoDB读组件
Neo4jItemReader面向网络的数据库Neo4j读组件
ResourcesItemReader基于批量资源的读组件,每次读取返回资源对象
AmqpItemReader读取AMQP队列组件
RepositoryItemReader基于SpringData的读组件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.ItemProcessor

  ItemProcessor表示对读取的数据进行处理,开发者可以实现自己的业务逻辑操作来对数据处理。

  ItemProcessor接口:

public interface ItemProcessor<I, O> {
    O process(I item) throws Exception;
}

 

  在process()方法中,参数item是ItemReader读取到的数据,返回O是交给ItemWriter写的数据。在process方法中可以对读取到的数据进行处理,如果返回值是null,则表示忽略这次的数据,跳过。

  实现组件介绍:

 

SpringBatch框架提供的ItemProcessor组件

ItemProcessor说明
CompositeItemProcessor组合处理器,可以封装多个业务处理服务
ItemProcessorAdapterItemProcessor适配器,可以服用现有的业务处理服务
PassThroughItemProcessor不做任何业务处理,直接返回读到的数据
ValidatingItemProcessor数据校验处理器,支持对数据的校验,如果校验不通过可以进行过滤掉或者通过slip的方式跳过对记录的处理

 

 

 

 

 

 

 

4.ItemWriter

  ItemWriter是Step中对资源的写处理,SpringBatch也提供了许多类型的写实现。

public interface ItemWriter<T> {
    void write(List<? extends T> items) throws Exception;

}

 

SpringBtach框架提供的ItemWriter组件
ItemWriter说明
FlatFileItemWriter写Flat类型文件
MultiResourceItemWriter多文件写组件
StaxEventItemWriter写XML类型文件
AmqpItemWriter写AMQP类型消息
ClassifierCompositeItemWriter根据Classifire路由不通的Item到特定的ItemWriter处理
HibernateItemWriter基于Hibernate方式写数据库
IbatisBtachItemWriter基于Ibatis方式写数据库
ItemWriterAdapterItemWriter适配器,可以服用现有的服务
JdbcBatchItemWriter基于JDBC方式写数据库
JmsItemWriter写JMS队列
JpaItemWriter基于Jpa方式写数据库
GenfireItemWriter基于分布式数据库Genfire的写组件
SpELMappingGenfireItemWriter基于Spring表达式语言写分布式数据库Genfire的组件
MimeMessageItemWriter发送邮件的写组件
MongoItemWriter基于分布式文件存储的数据库MongoDB写组件
Neo4jItemWriter面向网络的数据库Neo4j的写组件
PropertyExtractingDelegatingItemWriter属性抽取代理写组件。通过调用给定的SpringBean方法执行写入,参数由Item中指定的属性字段获取作为参数
RepositoryItemWriter基于SpringData的写组件
SimpleMailMessageItemWriter发送邮件的写组件
CompositeItemWriter条目写的组合模式,支持组装多个ItemWriter

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

转载于:https://www.cnblogs.com/whx20100101/p/10630004.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值