SpringBatch的核心组件JobLauncher和JobRepository
Spring Batch的框架包括启动批处理作业的组件和存储Job执行产生的元数据。因此只需掌握配置这个基础框架在批处理应用程序中即启动Jobs并存储Job元数据.
组件:Job Launcher和Job Repository.
对应着的Java接口分别是:JobLauncher和 JobRepository.
JobLauncher
packageorg.springframework.batch.core.launch;
(...)
publicinterface JobLauncher {
publicJobExecution run(Job job, JobParameters jobParameters)
throwsJobExecutionAlreadyRunningException,
JobRestartException,JobInstanceAlreadyCompleteException,
JobParametersInvalidException;
}
JobLauncher接口接受两个参数:Job和JobParameters
调用这个Job Launcher方法:可以通过java程序来通过JobLauncher来启动,也可以通过定时任务例如Quartz scheduler来启动.
JobRepository
JobRepository保持着所有Job执行的相关元数据,JobRepository的java接口如下:
packageorg.springframework.batch.core.repository;
(...)
publicinterface JobRepository {
booleanisJobInstanceExists(String jobName, JobParameters jobParameters);
JobExecutioncreateJobExecution(
StringjobName, JobParameters jobParameters)
throwsJobExecutionAlreadyRunningException, JobRestartException,
JobInstanceAlreadyCompleteException;
voidupdate(JobExecution jobExecution);
voidadd(StepExecution stepExecution);
voidupdate(StepExecution stepExecution);
voidupdateExecutionContext(StepExecution stepExecution);
voidupdateExecutionContext(JobExecution jobExecution);
StepExecutiongetLastStepExecution(JobInstance jobInstance,
StringstepName);
intgetStepExecutionCount(JobInstance jobInstance, String stepName);
JobExecutiongetLastJobExecution(String jobName,
JobParametersjobParameters);
}
JobResponseitory 接口提供所有的服务来管理批量任务的生命周期,包括创建,更新等等.一般而言job启动器会把job的创建任务委托给Job Repository来做,同时job也会在它执行的过程中来让Job Repository存储它当然的状态.
Spring Batch跟外部系统进行交互的
一个job的启动通常是一个事件来进行触发的,我们会经常用到JobLauncher接口和JobParameters类,但是这个事件是可以来自任何地方的,例如一个系统的定时器;一个http请求到web控制器来启动job等这就是Spring Batch 和外界的介入点.
另外批量Job程序基本上都是用来处理各种数据的,所以上图中我们可以看到SpringBatch的出口都是在跟数据源进行打交道,这些数据源可以是任何类型,但是文件系统和数据库是最常用的,当然它也可以支持写消息给JMS.
—–下面有个“顶”字,你懂得O(∩_∩)O哈哈~
—–乐于分享,共同进步!
—–更多文章请看:http://blog.csdn.net/duruiqi_fx
SpringBatch的核心组件JobLauncher和JobRepository的更多相关文章
- springbatch操作CSV文件
一.需求分析 使用Spring Batch对CSV文件进行读写操作: 读取一个含有四个字段的CSV文件(id, name, age, score), 对文件做简单的处理, 然后输出到还有一个csv文件 ...
- SpringBoot整合SpringBatch
一.引入依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...
- Spring-Batch将CSV文件转为XML文件
1 介绍 用Spring Batch实现一个简单的需求,将csv文件转换成xml文件. csv文件如下:record.csv username, user_id, transaction_date, ...
- spring batch学习笔记
Spring Batch是什么? Spring Batch是一个基于Spring的企业级批处理框架,按照我师父的说法,所有基于Spring的框架都是使用了spring的IoC特性,然后加上 ...
- Spring Batch(三) Job Launcher、ItemReader、ItemProcessor、ItemWriter各个实现类和用途
内容来自<Spring Batch 批处理框架>,作者:刘相. 1.JobLauncher JobLauncher(作业调度器)是SpringBatch框架提供的运行Job的能力.用过给定 ...
- spring batch 读取多个文件数据导入数据库
项目的目录结构 需要读取文件的的数据格式 applicatonContext.xml的配置 <?xml version="1.0" encoding="UTF-8& ...
- Spring Batch 跑批框架
SpringBatch的框架包括启动批处理作业的组件和存储Job执行产生的元数据. 如果作为一个批处理应用程序的开发人员,你暂时没有必要跟这些组件打交道, 因为它们主要为我们提供组件支持的角色,但是您 ...
- Spring Batch Concepts Chapter
Spring Batch Concepts Chapter The below figure shows two kinds of Spring Batch components:infrastruc ...
- Spring batch的学习
Spring batch是用来处理大量数据操作的一个框架,主要用来读取大量数据,然后进行一定处理后输出成指定的形式. Spring batch主要有以下部分组成: JobRepository ...
随机推荐
- JEECG中出现Java.sql.SQLException: Value 'xxxx' can not be represented as java.sql.Timestamp的解决办法
出现`Java.sql.SQLException: Value 'xxxx' can not be represented as java.sql.Timestamp',其中xxxx部分对应包含一个看 ...
- 第一章 搭建一个通用的.net core项目框架
项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https ...
- servlet之重写
package app02a;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;impo ...
- BZOJ 4260 Codechef REBXOR
Description Input 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,…,AN. Output 输出一行包含给定表达式可能的最大值. Sample ...
- [SDOI2016]游戏
Description Alice 和 Bob 在玩一个游戏. 游戏在一棵有 n 个点的树上进行.最初,每个点上都只有一个数字,那个数字是 123456789123456789. 有时,Alice 会 ...
- hdu 5877 线段树(2016 ACM/ICPC Asia Regional Dalian Online)
Weak Pair Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- ●BOZJ 1927 [Sdoi2010]星际竞速
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1927 题解: 显然是个DAG 建图和有向图最小路径覆盖的建图有些相似. 都是拆点为 u u' ...
- NOIP2014-9-6模拟赛
工资 (money/money.in/money.out) 时限1000ms 内存256MB 聪哥在暑假参加了打零工的活动,这个活动分为n个工作日,每个工作日的工资为Vi.有m个结算工钱的时间,聪哥可 ...
- Intellij idea: java.lang.ClassNotFoundException:javax.el.ELResolver异常解决办法
使用Intellij idea编译过程中遇到的问题及解决办法. 由于编译时候报javax.servlet不存在,我把tomcat下的servlet-api.jar放到了External Librari ...
- vue学习中v-if和v-show一起使用的问题
v-if和v-show一起使用 在开发项目过程中v-if和v-show一起使用时,接下面跟着的v-else会在页面上面显示两次 .代码如下: <tbody class="sortabl ...