Spring Batch入门教程及其框架搭建
Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供大量的,可重复的数据处理功能,包括日志记录/跟踪,事务管理,作业处理统计工作重新启动、跳过,和资源管理等重要功能。
业务方案:
- 批处理定期提交。
- 并行批处理:并行处理工作。
- 企业消息驱动处理
- 大规模的并行处理
- 手动或是有计划的重启
- 局部处理:跳过记录(如:回滚)
技术目标:
- 利用Spring编程模型:使程序员专注于业务处理,让Spring框架管理流程。
- 明确分离批处理的执行环境和应用。
- 提供核心的,共通的接口。
- 提供开箱即用(out of the box)的简单的默认的核心执行接口。
- 提供Spring框架中配置、自定义、和扩展服务。
- 所有存在的核心服务可以很容的被替换和扩展,不影响基础层。
- 提供一个简单的部署模式,利用Maven构建独立的Jar文件。
Spring Batch的结构:
这种分层结构有三个重要的组成部分:应用层、核心层、基础架构层。应用层包含所有的批处理作业,通过Spring框架管理程序员自定义的代码。核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。应用层和核心层建立在基础构架层之上,基础构架层提供共通的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块。可以被应用层和核心层使用)。
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执行过程:
从DB或是文件中取出数据的时候,read()操作每次只读取一条记录,之后将读取的这条数据传递给processor(item)处理,框架将重复做这两步操作,直到读取记录的件数达到batch配置信息中”commin-interval”设定值的时候,就会调用一次write操作。然后再重复上图的处理,直到处理完所有的数据。当这个Step的工作完成以后,或是跳到其他Step,或是结束处理。
这就是一个SpringBatch的基本工作流程。
将通过“Hello World”实例,与大家共同探讨SpringBatch的具体应用和实现。
工程结构如下图:
执行结果如下:
由最代码官方编辑于2014-3-18 23:05:15
猜你喜欢
- /
- /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/src
- /SpringBatchHelloWorld/src/main
- /SpringBatchHelloWorld/src/main/java
- /SpringBatchHelloWorld/src/main/java/com
- /SpringBatchHelloWorld/src/main/java/com/wanggc
- /SpringBatchHelloWorld/src/main/java/com/wanggc/springbatch
- /SpringBatchHelloWorld/src/main/java/com/wanggc/springbatch/sample
- /SpringBatchHelloWorld/src/main/java/com/wanggc/springbatch/sample/helloworld
- /SpringBatchHelloWorld/src/main/java/com/wanggc/springbatch/sample
- /SpringBatchHelloWorld/src/main/java/com/wanggc/springbatch
- /SpringBatchHelloWorld/src/main/java/com/wanggc
- /SpringBatchHelloWorld/src/main/java/com
- /SpringBatchHelloWorld/src/main/resources
- /SpringBatchHelloWorld/src/main/resources/applicationContext.xml
- /SpringBatchHelloWorld/src/main/resources/batch_hello.xml
- /SpringBatchHelloWorld/src/main/java
- /SpringBatchHelloWorld/src/main
- /SpringBatchHelloWorld/target
- /SpringBatchHelloWorld/target/classes
- /SpringBatchHelloWorld/target/classes/applicationContext.xml
- /SpringBatchHelloWorld/target/classes
- /SpringBatchHelloWorld
- spring 各种demo实例
- [工作必备]spring定时器简单的demo
- Java Spring定时器Demo, 可自动跳过节假日
- Spring两种常用的事务管理范例AspectJ和基于注解方式
- 证 Spring生命周期默认初始化和销毁方法通过xml配置实现
- 证 spring通过@Async注解实现异步执行Service方法并且通过Java Future对象得到执行结果
- spring入门实例demo
- spring实例入门教程
- spring整合rmi代码实例
- 原证精 spring如何注入List,Set,Map对象
- Spring Hibernate Spring Data MongoDB Akka Titles Bootstrap JQuery Maven 大全
- 证 spring实现忽略禁用@Required注解的实例