zoukankan      html  css  js  c++  java
  • 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类型数据,只能读取一次
    ItemReaderAdapter ItemReader适配器,可以服用现有的读操作
    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 组合处理器,可以封装多个业务处理服务
    ItemProcessorAdapter ItemProcessor适配器,可以服用现有的业务处理服务
    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方式写数据库
    ItemWriterAdapter ItemWriter适配器,可以服用现有的服务
    JdbcBatchItemWriter 基于JDBC方式写数据库
    JmsItemWriter 写JMS队列
    JpaItemWriter 基于Jpa方式写数据库
    GenfireItemWriter 基于分布式数据库Genfire的写组件
    SpELMappingGenfireItemWriter 基于Spring表达式语言写分布式数据库Genfire的组件
    MimeMessageItemWriter 发送邮件的写组件
    MongoItemWriter 基于分布式文件存储的数据库MongoDB写组件
    Neo4jItemWriter 面向网络的数据库Neo4j的写组件
    PropertyExtractingDelegatingItemWriter 属性抽取代理写组件。通过调用给定的SpringBean方法执行写入,参数由Item中指定的属性字段获取作为参数
    RepositoryItemWriter 基于SpringData的写组件
    SimpleMailMessageItemWriter 发送邮件的写组件
    CompositeItemWriter 条目写的组合模式,支持组装多个ItemWriter

      

  • 相关阅读:
    UVA Live Achrive 4327 Parade (单调队列,dp)
    从磁盘读取一个文件到内存中,再打印到控制台
    二分查找法
    日期:Date
    线程与进程
    泛型基本知识
    泛型
    Map集合的遍历方式:
    Arrays
    Set接口
  • 原文地址:https://www.cnblogs.com/whx20100101/p/10630004.html
Copyright © 2011-2022 走看看