AXIN的gravatar头像
AXIN2014-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
最代码最近下载分享源代码列表最近下载
lovejing LV72020年5月16日
月亮星星星星星星
laowantong260 LV72020年1月18日
月亮星星星星星星
Zhangjifeng LV32019年6月21日
星星星星星星
aaaaaSAAAA LV12019年4月8日
星星
gxh2017 LV62019年3月28日
月亮星星星星
412059770 LV22019年1月18日
星星星星
bdkwxz LV102019年1月14日
月亮月亮星星星星
机智的我 LV172019年1月2日
太阳星星
15156026529 LV12018年12月11日
星星
nerosai LV12018年12月6日
星星
最代码最近浏览分享源代码列表最近浏览
ham1234566月4日
暂无贡献等级
zhang666 LV83月16日
月亮月亮
刀剑如梦 LV12020年12月4日
星星
chi_haoyan LV12020年10月25日
星星
dcowl123 LV12020年7月31日
星星
tufuqq2020年7月1日
暂无贡献等级
郑国庆2020年6月29日
暂无贡献等级
xzx8467391272020年6月24日
暂无贡献等级
兰陵20802020年6月9日
暂无贡献等级
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友