springbatch简介与helloworld

一、SpringBatch简介

Spring Batch是一个轻量级的批处理框架, 可以用于企业级海量数据处理, 它提供以下技术解决方案:

1. 定时批处理

2. 大规模并行处理

3. 企业消息驱动处理

二、SpringBatch结构

Spring Batch由应用层、核心层、基础架构层等组成:

1. 应用层: 包含所有的批处理作业,  使用spring框架管理程序员自定义的代码

2.核心层: 包含batch启动和控制所需要的核心类, 如: JobLauncher、Job、Setp等

3.基础架构层: 提供共通的读(ItemReader)、写(ItemWriter)和服务(RetryTemplate)

应用层和核心层简历在基础架构层之上, 下图展示了它们之间的关系:

三、SpringBatch流程

1. spring batch执行过程:

外部控制器调用JobLauncher启动一个Job, 每个batch都会包含一个Job, Job就像一个容器, 这个容器里装了若干个Setp,

batch里面真正干活的就是这些Setp(ItemReader用来读取数据,ItemProcessor用来处理数据,ItemWriter用来写数据),

Job调用Step实现对数据的操作, Setp处理完成后, 将处理结果一步步返回给上一层。

JobRepository是上述处理提供的一种持久化机制, 它为JobLauncher、Job、Setp实例童工CRUD操作。

2. Step执行过程:

从DB或文件中取出数据的时候, read操作每次只读取一条记录, 然后将这条数据传递给processor处理, batch框架将重复做这两步操作,

直到读取记录的数量达到配置文件中"commin-interval"设定值得时候就会调用一个write操作, 然后再重复以上操作, 直到处理完所有的

数据。当这个Setp工作完成以后可以调到其他Setp或结束处理。

四、HelloWorld实例

本实例没有像前面讲的那样配置ItemReader、ItemProcessor、ItemWriter,而是直接在Setp中调用Tasklet

由Tasklet完成"Hello World!"的输出。

1. 工程结构图:

2. applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-2.5.xsd"
	default-autowire="byName">

	<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
		<property name="jobRepository" ref="jobRepository" />
	</bean>

	<bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean" />

	<bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
</beans>

applicationContext.xml主要用来配置一些spring信息, JobLaunch类用来启动Batch

3. springBatch.xml

<?xml version="1.0" encoding="UTF-8"?>
<bean:beans xmlns="http://www.springframework.org/schema/batch"
	xmlns:bean="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-2.5.xsd
	http://www.springframework.org/schema/batch
	http://www.springframework.org/schema/batch/spring-batch-2.1.xsd">

	<!-- 装载spring核心配置文件 -->
	<bean:import resource="applicationContext.xml" />

	<job id="helloWorldJob">
		<step id="step_hello" next="step_world">
			<tasklet ref="hello" transaction-manager="transactionManager"></tasklet>
		</step>
		<step id="step_world">
			<tasklet ref="world" transaction-manager="transactionManager"></tasklet>
		</step>
	</job>

	<bean:bean id="hello" class="com.zdp.springbatch.WriteTasklet">
		<bean:property name="message" value="Hello "></bean:property>
	</bean:bean>

	<bean:bean id="world" class="com.zdp.springbatch.WriteTasklet">
		<bean:property name="message" value=" World!"></bean:property>
	</bean:bean>
</bean:beans>

springBatch.xml配置了一个ID为helloWorldJob的Job,这个Job有两个Setp:setp_hello和setp_world,

前者负责输出“Hello ”, 后者负责输出“World!”,当第一个Setp完成之后执行第二个Setp。

4. WriteTasklet:

public class WriteTasklet implements Tasklet {

    private String message;

    /**
     * @param message
     * the message to set
     */
    public void setMessage(String message) {
        this.message = message;
    }

    @Override
    public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext)throws Exception {
        System.out.println(message);
        return RepeatStatus.FINISHED;
    }

}

WriteTasklet中定义了一个message属性,通过springBatch.xml的hello和world bean为其注入值,execute方法由Tasklet接口继承而来,

是Tasklet实现业务逻辑的地方,此实例只是简单的输出message信息后直接返回。

5. JobLaunch

/**
 * Test client
 */
public class JobLaunch {

	public static void main(String[] args) {
		try {
			ApplicationContext context = new ClassPathXmlApplicationContext("springBatch.xml");

			JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
			Job job = (Job) context.getBean("helloWorldJob"); 

			// JobLauncher可以用来启动Job
			JobExecution result = jobLauncher.run(job, new JobParameters());

			// 处理结束,控制台打印处理结果
			System.out.println(result.toString());
		} catch (Exception e) {
			throw new RuntimeException("error happens...", e);
		}
	}
}

通过spring配置取得JobLauncher和Job对象,然后由JobLauncher的run方法启动Job,JobParameters是标志Job的一些参数,

处理结束后控制台输出处理结果。

转自:http://www.cnblogs.com/gulvzhe

springbatch简介与helloworld,布布扣,bubuko.com

时间: 2024-10-11 05:54:47

springbatch简介与helloworld的相关文章

OpenCL学习笔记(三):OpenCL安装,编程简介与helloworld

OpenCL安装 安装我不打算花篇幅写,原因是OpenCL实在是可以太多的平台+环境下实现了,包括GPU和FPGA,以及不同的器件支持,在这里我主要把网上可以找到比较不错的经验贴列一下,方便大家,我主要关注了FPGA的,其他GPU的大家网上搜搜吧: altera opencl sdk下载: https://www.altera.com.cn/products/design-software/embedded-software-developers/opencl/overview.html alt

《一头扎进Spring4》学习笔记(一)简介与helloworld实现

第一讲 问候Spring4 第一节 简介 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建.简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架. 1.框架特征 轻量--从大小与开销两方面而言Spring都是轻量的.完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布.并且Spring所需的处理开销也是微不足道的.此外,Spring是非侵入式的:典型地,Sprin

Hibernate简介与HelloWorld

一.Hibernate简介: 二.Hibernate4 版Hello World 实现 工程结构: com.cy.model.Student: package com.cy.model; public class Student { private long id; private String name; public long getId() { return id; } public void setId(long id) { this.id = id; } public String g

第三周:Hadoop 入门 之helloworld

**********************3A************************* 简介运算 helloworld 1.   验证 hadoop 安装正常 2. bin/hadoop jar hadoopexamples-1.1.2.jar wordcount  in out 3.  bin/hadoop dfs -ls   查看 hdfs 下面有什么东西 4.  bin/hadoop dfs put ../input ./in 5.  hadoop 是没有当前路径的概念 必须全

麦子学院-Web前端开发工程师系列培训教程

HTML+CSS基础入门1.课程介绍2.html的语法3.html的基本结构4.html的文档设置标记上(格式标记)5.html的文档设置标记下(文本标记)6.html图像标记img7.html超链接的使用8.html表格相关的标记9.html表格实战<简单的网页布局>10.html框架详解与框架布局实战11.HTML表单设计(上)12.HTML表单设计(下)13.使用CSS样式的方式14.定义CSS样式(CSS选择器)15.CSS常用属性(颜色属性)16.css常用属性(字体相关属性)17.

初学Cocos Creator收集的视频教程

技术胖 Cocos Creator基础视频教程(共5集) 简介和HELLOWORLD 软件界面介绍和跳动的小球制作 SCENE介绍和基本操作 玩家输入事件监听操作 PREFAB和计时器 http://jspang.com/category/learn/jichu/ 技术胖 Cocos Creator实战-<橡皮怪勇闯地下室>视频教程(共10集) 游戏简介和项目分析 UI界面布局 主角的动作监听和左右跳动 随机生成地刺 点击生成地刺和地刺的移动 碰撞检测132 倒计时和分数增加 欢迎界面代码编写

【传递智慧】C++基础班公开课第六期培训

11月11日 二 213 进程间关系和守护进程 11月12日 三 213 信号 11月13日 四     11月14日 五 213 线程(创建,销毁,回收) 11月15日 六 213 线程同步机制 11月16日 日     11月17日 一 213 网络协议基础 11月18日 二 213 socket网络编程 11月19日 三 213 socket网络编程 11月20日 四     11月21日 五 213 并发服务器一(多进程/多线程) 11月22日 六 213 并发服务器二(多路I/O复用)

SpringBatch的流程简介

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

cocos2d-JS 第三炮Helloworld及Cocos Creater简介(宝贵的经验!)

一.编辑器介绍 1)资源管理器:显示了项目资源文件夹(assets)中的所有资源.这里会以树状结构显示文件夹并自动同步在操作系统中对项目资源文件夹内容的修改.您可以将文件从项目外面直接拖拽进来,或使用菜单导入资源. PS:项目中所有用到的资源都在其中,我们的script脚本也在里面 2)场景编辑器:用来展示和编辑场景中可视内容的工作区域.所见即所得的场景搭建工作都依靠场景编辑器中的显示来完成 PS:游戏就是一个场景到另一个场景,很重要的一个概念~ 3)层级管理器:树状列表的形式展示场景中的所有节