此系列博客皆为学习Spring Batch时的一些笔记;

为什么我们需要批处理?

  1. 我们不会总是想要立即得到需要的信息,批处理允许我们在请求处理之前就一个既定的流程开始搜集信息;比如说一个银行对账单,我们可以按月生成,并在用户查询之前开启一个批处理流程进行处理;
  2. 有时候它能让生意做得更好;比如说在线购物时,并不是说你买了一个产品零售商就立即发货,而是四五个小时后,统一发货;
  3. 更好的利用资源;让应该利用的处理能力闲置起来是一个大的浪费,我们可以定制处理让一个机器一个接一个的运行Job可以更好的利用机器的处理能力;

什么是批处理?

  批处理是指在没有与用户进行交互和干扰的情况下进行数据处理,一旦开始,一个批处理流程应该在没有任何干扰的情况下运行至结束;

为什么要使用Spring Batch?

  1. 可维护性,Spring Batch能让你依靠Spring框架所提倡的依赖注入去解耦对象,凭借Spring所提供的测试工具生成健壮的一系列测试单元,这些都让你的维护风险最小化;
  2. 灵活性,使用Spring Batch,你能在系统之间共享代码,如你能使用那些在你的Web应用程序中已经被测试和调试过的服务;
  3. 可扩展性,在一个完全没有事务管理的Batch Job中,你只需要记住一些原则,并通过一些简单的配置就可以让整个批处理流程具有事务回滚和Commit的能力;
  4. 学习曲线低,如果你有过使用Spring的经验,你只需很小的学习曲线就能使用Spring Batch,因为Spring Batch建立在Spring框架的基础之上,它遵循Spring的惯例,像其他基于Spring的应用程序那样,使用Spring的其它特征;
  5. 活跃的社区支持;

Spring Batch的背景及组成

Spring Batch框架是埃森哲和SpringSource合作项目,它利用一个基于标准的方式去实现常见的批处理模式和范例;它实现的特征包括:数据验证、输出格式化、用一种可重用的方式去实现复杂的业务规则、处理大数据集的能力;

Spring Batch由3层组成:

第一层是应用程序层,包括:所有的自定义代码、为建立批处理流程的所有配置、业务逻辑和服务;注意应用程序层并不处于其它两层的上方,而是封装了其它两层(核心层和基础框架层),原因是在应用程序层中绝大多数你所开发的自定义代码都是和核心层一起工作的;

应用程序层绝大部分时候是和下一层(核心层)进行交互,核心层包含了定义“批处理域”的所有部分,核心组件的元素包括Job和Step接口,同时也包括执行Job的所有接口:JobLauncher和JobParameter;

最下面一层是基础框架层,为了做一些处理,你需要从文件、数据库中读写数据,或者应付一个Job失败的情况,这些部分被视作为常见的基础框架,被放置在Framework的基础框架组件里面。

注意:Spring Batch最常见的误解是它是一个scheduler,但在Spring Batch中没有任何一种方式能让一个Job在某个预定的时间或者被某个事件触发时启动,这些都是通过外部的方式来做到

使用Spring Batch来定义Job

Spring Batch包含了很多领域特定的概念,其间就包括Job,一个Job是指由很多Step组成的一个流程,当一个Step失败之后,这个Job可能会重新运行也可能不会重新运行,一个Job的流程也可能基于某个条件来运行;我们可以在一个applicationContext文件中这样来定义一个Job:

<bean id="accountTasklet"
class="com.thoughtworks.springBatchDemo.AccountTasklet"/>
<job id="accountJob">
<step id="accountStep">
<tasklet ref="accountTasklet"/>
</step>
</job>

Spring Batch Admin Project

Spring Batch提供了很多管理工具,例如启动或停止Spring Batch Job、查看上次Job运行情况的统计信息;Spring Batch将这些功能都包含在一个新的插件里:Spring Batch Admin Project,它提供了一个基于Web的控制中心,让你能对你的批处理流程实施控制,并能监控批处理的性能。

初探Spring Batch的更多相关文章

  1. 大量数据也不在话下,Spring Batch并行处理四种模式初探

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring相关文章:Springboot-Cloud 前面写了一篇文章<通过例子讲解Spring Batch入门,优 ...

  2. Spring Batch远程分区的本地Jar包模式

    1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring相关文章:Springboot-Cloud Spring Batch远程分区对于大量数据的处理非常擅长,它的实现 ...

  3. Spring Batch在大型企业中的最佳实践

    在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...

  4. spring batch资料收集

    spring batch官网 Spring Batch在大型企业中的最佳实践 一篇文章全面解析大数据批处理框架Spring Batch Spring Batch系列总括

  5. Spring Batch学习笔记三:JobRepository

    此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch Job在运行时有很多元数据,这些元数据一般会被保存在内存或者数据库中,由于Spring Batch在默认配置是使用H ...

  6. Spring Batch学习笔记二

    此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch的架构 一个Batch Job是指一系列有序的Step的集合,它们作为预定义流程的一部分而被执行: Step代表一个自 ...

  7. Spring Batch 中文参考文档 V3.0.6 - 1 Spring Batch介绍

    1 Spring Batch介绍 企业领域中许多应用系统需要采用批处理的方式在特定环境中运行业务操作任务.这种业务作业包括自动化,大量信息的复杂操作,他们不需要人工干预,并能高效运行.这些典型作业包括 ...

  8. Spring Batch 批处理框架

    <Spring Batch 批处理框架>基本信息作者: 刘相 出版社:电子工业出版社ISBN:9787121252419上架时间:2015-1-24出版日期:2015 年2月开本:16开页 ...

  9. [Spring Batch] 图解Spring Batch原理

    找到一副以前学习的图,稻清楚的描述了Spring Batch运行原理:  

随机推荐

  1. MySQL、mybatis的查询条件-时间段

    1.配置文件中的写法 <if test="startTime !=null and startTime !='' "> <![CDATA[ and createT ...

  2. PHP 使用 password_hash() 给密码加密

    PHP >= 5.5 时,可以使用 password_hash() 和 password_verify() 来对用户的密码进行加密和验证,例如在用户注册(加密存储)和登陆(验证): <?p ...

  3. vim正则表达式~转

    vim正则表达式(转) Vim中的正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操作. 如果你比较熟悉Perl的正规表达式,可以直接参照与Perl正则表达式的区别一节. 一.使用正则表 ...

  4. infinitynewtab 背景api

    http://img.infinitynewtab.com/wallpaper/527.jpg 图片   1-4050

  5. Eclipse下使用GDT插件无法登陆GAE & GDT无法上传JAVA代码

    今天更新github主页的过程中,想使用GAE部署一个Java Web服务来更好的支持网站动态性(关键是利用了免费的GAE资源),结果遇到了2个大问题. 1.GDT插件无法登陆GAE账户 错误1:登陆 ...

  6. mysql 使用存储过程批量插数据

    #创建测试表 DROP TABLE IF EXISTS test.test; CREATE TABLE test.test( id int(10) not null auto_increment, a ...

  7. redis笔记

    redis字符串 : 存储基本的一个键值对. redis哈希 : Redis的哈希值是字符串字段和字符串值之间的映射,所以他们是表示对象的完美数据类型. 一个哈希表可以存在多个键值对,可对键值进行增删 ...

  8. 真机测试及布署Code Sign error问题总结

    Code Sign error: Certificate identity 'iPhone Developer: idf (XR9HN3TD7E)' appears more than once in ...

  9. iOS 因为reason: 'Pushing the same view controller instance more than once is not supported而奔溃(下)

    这个问题是什么意思呢,之前遇到过几次,但程序再次打开时没有问题,也就没有重视,今天又遇到了,无法忍受啊. 控制台报的错误是:"不支持多次推入相同的视图控制器实例". 什么原因造成的 ...

  10. Win32 设置窗口透明度 SetLayerTransparent

    注意: 在调用SetLayeredWindowAttributes 之前,需要给窗口加上WS_EX_LAYERED属性,否则会无效 void SetLayerTransparent(HWND hWnd ...