- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用Spring Batch构建企业级批处理应用 第1部分
引言
总述
本系列文章旨在通过示例搭建以及特性介绍,详细讲述如何利用 Spring Batch 开发企业批处理应用。本
系列文章共分为三部分,第一部分初步介绍了批处理以及 Spring Batch的相关概念,同时搭建了一个简
单的基于Spring Batch的批处理应用。第二部分介绍了 Step Flow 以及并发支持。第三部分则主要介绍
了 Spring Batch对任务监控的支持。下面让我们进入第一部分内容。
什么是批处理
在现代企业应用当中,面对复杂的业务以及海量的数据,除了通过庞杂的人机交互界面进行各种处理外, 还有一类工作,不需要人工干预,只需要定期读入大批量数据,然后完成相应业务处理并进行归档。这类 工作即为批处理”
从上面的描述可以看出,批处理应用有如下几个特点:
? 数据量大,少则百万,多则上亿的数量级。
? 不需要人工干预,由系统根据配置自动完成。
? 与时间相关,如每天执行一次或每月执行一次。
同时,批处理应用又明显分为三个环节:
? 读数据,数据可能来自文件、数据库或消息队列等
? 数据处理,如电信支撑系统的计费处理
? 写数据,将输岀结果写入文件、数据库或消息队列等
因此,从系统架构上,应重点考虑批处理应用的事务粒度、日志监控、执行、资源管理(尤其存在并发的
情况下)。从系统设计上,应重点考虑数据读写与业务处理的解耦,提高复用性以及可测试性。
什么是 Spring Batch
Spring Batch 作为Spring的子项目,是一款基于 Spring的企业批处理框架。通过它可以构建出健壮的
企业批处理应用。Spring Batch 不仅提供了统一的读写接口、丰富的任务处理方式、灵活的事务管理及并 发处理,同时还支持日志、监控、任务重启与跳过等特性,大大简化了批处理应用开发,将开发人员从复 杂的任务配置管理过程中解放岀来,使他们可以更多地去关注核心的业务处理过程。
另外我们还需要知道,Spring Batch 是一款批处理应用框架,不是调度框架。它只关注批处理任务相关的
问题,如事务、并发、监控、执行等,并不提供相应的调度功能。因此,如果我们希望批处理任务定期执 行,可结合Quartz等成熟的调度框架实现。
下面将通过一个示例详细介绍如何使用 Spring Batch 搭建批处理应用。这个示例比较简单,对系统中所
有用户发送一封缴费提醒通知。此处,我们简单地将缴费提醒输岀到控制台。当然,随着介绍的深入,我 将逐渐丰富该功能,使其最终完整展示 Spring Batch的各种特性。
回页首
环境搭建
首先,从 Spring官方网站下载 Spring Batch 发布包(见 参考资源)。本文基于 Spring Batch 2.1.6 (当 前最新版本为 2.1.8 )以及Spring 2.5.6 版本构建。我们可以看到 Spring Batch 共包含spring-batch-core 和spring-batch-infrastructure 两个包。spring-batch-core 主要包含批处理领域相关类,而
spring-batch-infrastructure 提供了一个基础访问处理框架。
接下来,让我们新建一个 Eclipse工程,并将 Spring Batch 以及Spring相关包添加到依赖环境,如 图
1所示
图1.依赖环境
环境搭建完成后,让我们看一下如何一步步构建一个批处理应用。
回页首
构建应用
如引言”中所述Spring Batch按照关注点的不同,将整个批处理过程分为三部分:读、处理、写,从而将 批处理应用进行合理解耦。同时, Spring Batch 还针对读、写操作提供了多种实现,如消息、文件、数据
库。对于数据库,还提供了 Hibernate、iBatis、JPA等常见ORM框架的读、写接口支持。
对象定义
首先我们需要编写用户以及消息类,比较简单,如清单 1和 清单2所示:
清单1. User 类
package org.springframework.batch.sample;
public class User {
private String name;
private Integer age;
public String getName() {return name;}
public void setName(String name) { = name;}
public Integer getAge() {return age;}
public void setAge(Integer age) {this.age = age;}
清单2. Message 类
package org.springframew
您可能关注的文档
- 五合中学13-14学年冀教八年级上学期期末试题.docx
- 五年上册人教版数学第三单元《除数是整数的小数除法》(徐飞).docx
- 五年级上册数学第1、2单元试卷苏教版.docx
- 五年级总教案.docx
- 五年级数学卷.docx
- 五数下教学计划.docx
- 井下(设备、小型电器、电缆等)电气防爆标准.docx
- 井下电气作业国家题库.docx
- 亲社会的行为.docx
- 人力资源复习资料论述题.docx
- GB/T 29324-2024架空导线用碳纤维增强复合材料芯.pdf
- 《GB/T 29324-2024架空导线用碳纤维增强复合材料芯》.pdf
- GB/T 43905.1-2024焊接及相关工艺中烟尘和气体取样的实验室方法 第1部分:电弧焊中烟尘排放速率的测定和分析用烟尘的收集.pdf
- 《GB/T 43905.1-2024焊接及相关工艺中烟尘和气体取样的实验室方法 第1部分:电弧焊中烟尘排放速率的测定和分析用烟尘的收集》.pdf
- 中国国家标准 GB/T 43905.1-2024焊接及相关工艺中烟尘和气体取样的实验室方法 第1部分:电弧焊中烟尘排放速率的测定和分析用烟尘的收集.pdf
- 中国国家标准 GB/T 18910.21-2024液晶显示器件 第2-1部分:无源矩阵单色液晶显示模块 空白详细规范.pdf
- GB/T 18910.21-2024液晶显示器件 第2-1部分:无源矩阵单色液晶显示模块 空白详细规范.pdf
- 《GB/T 18910.21-2024液晶显示器件 第2-1部分:无源矩阵单色液晶显示模块 空白详细规范》.pdf
- GB/T 43860.1220-2024触摸和交互显示 第12-20部分:触摸显示测试方法 多点触摸性能.pdf
- 中国国家标准 GB/T 43860.1220-2024触摸和交互显示 第12-20部分:触摸显示测试方法 多点触摸性能.pdf
文档评论(0)