AXIN的gravatar头像
AXIN 2014-03-12 11:30:33

Spring Batch入门教程及其框架搭建

    Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供大量的,可重复的数据处理功能,包括日志记录/跟踪,事务管理,作业处理统计工作重新启动、跳过,和资源管理等重要功能。

业务方案:

  1. 批处理定期提交。
  2. 并行批处理:并行处理工作。
  3. 企业消息驱动处理
  4. 大规模的并行处理
  5. 手动或是有计划的重启
  6. 局部处理:跳过记录(如:回滚)

技术目标:

  1. 利用Spring编程模型:使程序员专注于业务处理,让Spring框架管理流程。
  2. 明确分离批处理的执行环境和应用。
  3. 提供核心的,共通的接口。
  4. 提供开箱即用(out of the box)的简单的默认的核心执行接口。
  5. 提供Spring框架中配置、自定义、和扩展服务。
  6. 所有存在的核心服务可以很容的被替换和扩展,不影响基础层。
  7. 提供一个简单的部署模式,利用Maven构建独立的Jar文件。

 Spring Batch的结构:

              Spring Batch入门教程及其框架搭建

    这种分层结构有三个重要的组成部分:应用层、核心层、基础架构层。应用层包含所有的批处理作业,通过Spring框架管理程序员自定义的代码。核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。应用层和核心层建立在基础构架层之上,基础构架层提供共通的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块。可以被应用层和核心层使用)。

Spring Batch 框架流程简单介绍

Spring Batch流程介绍:

Spring Batch入门教程及其框架搭建

上图描绘了Spring Batch的执行过程。说明如下:

    每个Batch都会包含一个Job。Job就像一个容器,这个容器里装了若干Step,Batch中实际干活的也就是这些Step,至于Step干什么活,无外乎读取数据,处理数据,然后将这些数据存储起来(ItemReader用来读取数据,ItemProcessor用来处理数据,ItemWriter用来写数据) 。JobLauncher用来启动Job,JobRepository是上述处理提供的一种持久化机制,它为JobLauncher,Job,和Step实例提供CRUD操作。

    外部控制器调用JobLauncher启动一个Job,Job调用自己的Step去实现对数据的操作,Step处理完成后,再将处理结果一步步返回给上一层,这就是Batch处理实现的一个简单流程。 

Step执行过程:

Spring Batch入门教程及其框架搭建

      从DB或是文件中取出数据的时候,read()操作每次只读取一条记录,之后将读取的这条数据传递给processor(item)处理,框架将重复做这两步操作,直到读取记录的件数达到batch配置信息中”commin-interval”设定值的时候,就会调用一次write操作。然后再重复上图的处理,直到处理完所有的数据。当这个Step的工作完成以后,或是跳到其他Step,或是结束处理。

      这就是一个SpringBatch的基本工作流程。

   将通过“Hello World”实例,与大家共同探讨SpringBatch的具体应用和实现。

 工程结构如下图:

Spring Batch入门教程及其框架搭建

执行结果如下:

Spring Batch入门教程及其框架搭建

原文:Spring Batch 简介


最代码官方编辑于2014-3-18 23:05:15


打赏

文件名:SpringBatchHelloWorld.rar,文件大小:9.724K 下载
  • /
      • /SpringBatchHelloWorld
        • /SpringBatchHelloWorld/.classpath
        • /SpringBatchHelloWorld/.project
          • /SpringBatchHelloWorld/.settings
            • /SpringBatchHelloWorld/.settings/org.eclipse.jdt.core.prefs
            • /SpringBatchHelloWorld/.settings/org.eclipse.m2e.core.prefs
        • /SpringBatchHelloWorld/pom.xml
          • /SpringBatchHelloWorld/target
              • /SpringBatchHelloWorld/target/classes
                • /SpringBatchHelloWorld/target/classes/applicationContext.xml
最代码最近下载分享源代码列表最近下载
changup  LV6 2022年2月2日
雾岛听风  LV7 2021年10月20日
lovejing  LV7 2020年5月16日
laowantong260  LV7 2020年1月18日
Zhangjifeng  LV3 2019年6月21日
aaaaaSAAAA  LV1 2019年4月8日
gxh2017  LV6 2019年3月28日
412059770  LV2 2019年1月18日
bdkwxz  LV10 2019年1月14日
机智的我  LV17 2019年1月2日
最代码最近浏览分享源代码列表最近浏览
莫名奇妙的帅  LV4 2023年3月9日
二手玫瑰  LV15 2022年11月18日
是你爸爸啊100  LV5 2022年7月30日
1529860026  LV24 2022年7月14日
whfuai  LV14 2022年5月9日
changup  LV6 2022年2月2日
Mere 2021年11月30日
暂无贡献等级
Mr.C 2021年11月2日
暂无贡献等级
雾岛听风  LV7 2021年10月20日
想什么名字的好麻烦  LV1 2021年7月24日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友