SpringBatch概述

SpringBatch概述1、SpringBatch简介1.1、简介根据Spring官网描述,SpringBatch是一个轻量级的、完善的批处理应用框架,旨在支持企业系统建立健壮、高效的批处理应用。然而SpringBatch不是一个调度框架,它只关注于任务的处理,如日志监控、事务、并发问题等,但是它可以与其它调度框架一起联合使用,完成相应的调度任务,如Quartz、Tivoli、Control-M等。Sprin…

大家好,又见面了,我是你们的朋友全栈君。

1、SpringBatch简介

1.1、简介
  • 根据Spring官网描述,Spring Batch是一个轻量级的、完善的批处理应用框架,旨在支持企业系统建立健壮、高效的批处理应用。然而Spring Batch不是一个调度框架,它只关注于任务的处理,如日志监控、事务、并发问题等,但是它可以与其它调度框架一起联合使用,完成相应的调度任务,如Quartz、Tivoli、Control-M等。
  • Spring Batch提供了很多非常实用的组件,包括了日志/跟踪、事务管理、作业处理统计、作业重新启动、跳过和资源管理。它还提供了更先进的技术服务和功能,支持通过优化和分区技术实现极高容量和高性能的批处理作业。Spring Batch既可以用于简单的用例(例如将文件读入数据库或运行存储过程),也可以用于复杂的、大容量的用例(例如在数据库之间移动大容量的数据、转换数据等等)。高容量批处理作业可以以高度可伸缩的方式利用框架来处理大量信息。
1.2、使用场景

简单一点来说,Spring Batch就是一个数据处理的框架,它的使用场景如下:

  • 从数据库,文件或队列中读取大量记录。
  • 以某种方式处理数据。
  • 以修改后的形式写回数据。
1.3、Spring Batch提供哪些功能
  • Transaction management(事务管理)
  • Chunk based processing(基于块的处理)
  • Declarative I/O(声明式的输入输出)
  • Start/Stop/Restart(启动/停止/再启动)
  • Retry/Skip(重试/跳过)

2、Spring Batch框架结构

2.1 、Spring Batch分层结构

在这里插入图片描述
这种分层结构有三个重要的组成部分:应用层、核心层、基础架构层。应用层包含所有的批处理作业,通过Spring框架管理程序员自定义的代码。核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。应用层和核心层建立在基础架构层之上,基础构架层提供顶层的读接口(ItemReader)、写接口(ItemWriter)、处理接口(ItemProcess)和服务(如RetryTemplate:重试模块。可以被应用层和核心层使用)等。

2.2、Spring Batch任务流程

在这里插入图片描述
解释一下上面流程中几个参数的含义:

  • JobLauncher:任务启动器。可以理解为程序的入口。
  • Job:表示一个具体的任务,一个任务可以包含一个Step,也可以包含多个Step,由任务启动器进行启动。
  • Step:一个具体的执行步骤,是任务的具体执行内容,一个Step的执行过程包括读数据(ItemReader)、处理数据(ItemProcessor)、写数据(ItemWriter)。
  • JobRepository:批处理任务仓库。用来记录任务状态信息,可以看做是一个数据库的接口。
2.3、Spring Batch任务执行的两种方式

从上述文章中我们可以知道,任务的具体执行内容是Step,然后每一个Step里面都会有一个tasklet,它是一个任务执行单元。

chunk是数据单元的意思,chunk包含在tasklet里面,一个数据单元的大小由你自己决定,然后Spring Batch会进行一个do{}while()循环,就是循环的读数据、处理数据、写数据,直到数据全部处理完成。
在这里插入图片描述

2.3.1、tasklet执行方式

根据官网的解读,tasklet的一般适用于 Step 操作不需要读操作,或不需要写操作,或两者都不需要的情景下,tasklet定义如下。

<step id="step_hello">
       <tasklet ref="hello" />
 </step>
2.3.1、chunk执行方式

对于chunk则实用典型的JOB处理方式:读数据、处理数据、写数据,但是需要确定一个数据单元的大小,chunk定义方式如下:

<step id="chunkStep" next="clean">
     <tasklet>
        <chunk reader="reader"  processor="processor"  writer="writer" commit-interval="100" />
     </tasklet>
 </step>

如侵权,请告知,立删!

欢迎各位关注我的JAVAERS公众号,陪你一起学习,一起成长,一起分享JAVA路上的诗和远方。在公众号里面都是JAVA这个世界的朋友,公众号每天会有技术类文章,面经干货,也有进阶架构的电子书籍,如Spring实战、SpringBoot实战、高性能MySQL、深入理解JVM、RabbitMQ实战、Redis设计与实现等等一些高质量书籍,关注公众号即可领取哦。在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140146.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月8日 上午8:20
下一篇 2022年5月8日 上午8:20


相关推荐

  • html5中的空格怎么写,空格的代码(【html5空格代码怎么写】)「建议收藏」

    html5中的空格怎么写,空格的代码(【html5空格代码怎么写】)「建议收藏」空格的代码(【html5空格代码怎么写】),哪吒游戏网给大家带来详细的空格的代码(【html5空格代码怎么写】)介绍,大家可以阅读一下,希望这篇空格的代码(【html5空格代码怎么写】)可以给你带来参考价值。6.不要应用with,void,eval。每行释注的释注符后要加一个空格后才写解注,如://MynameisCKJ.1.单行释注:用“//”标注,注意免避无意义的释注。2….

    2026年2月15日
    5
  • VS2013产品密钥

    VS2013产品密钥VS2013试用期结束需要提供产品密钥进行注册,下面将提供几个好用的产品密钥。首先打开VS-&amp;amp;gt;帮助-&amp;amp;gt;注册产品-&amp;amp;gt;输入产品密钥BWG7X-J98B3-W34RT-33B3R-JVYW9(亲测有效)下面几个VS版本楼主未使用过,大家可以使用一下试试。VisualStudioUltimate2013KEY(密钥):BWG7X-J98B3-W34RT-33B3…

    2022年5月20日
    114
  • 数据库课程设计:教务管理系统Swing+MySql

    数据库课程设计:教务管理系统Swing+MySql文章目录实验报告主要内容3.2需求分析3.2.1简要叙述系统需求调查的方法1.需求分析的调查方法和流程2,需求调查结果的整理各种图1.业务流程图2.数据流图3.数据字典(截取部分)4.功能模块图5.用例图6.概念设计的基本思想和原理方法7.物理模型界面下载链接实验报告主要内容3.2需求分析3.2.1简要叙述系统需求调查的方法1.需求分析的调查方法和流程①调查学校教务系统的组织结构,列出各…

    2022年5月19日
    36
  • YUM 安装MariaDB

    YUM 安装MariaDB1 安装 yuminstallma server2 启动 systemctlsta service3 登录 mysql 安装完之后默认的是无密码登录 回车即可 登录 登录 mysqlmysql uroot p 切换数据库 usemysql 更改远程链接授权 grantallpriv to root 4 使用客户端 navicat 连接设置密码 方便 此时无

    2026年3月18日
    2
  • Logstash Grok与Filter插件深度解析:从基础到高级应用

    Logstash Grok与Filter插件深度解析:从基础到高级应用

    2026年3月15日
    2
  • Node.js异步编程,promise,fibers

    Node.js异步编程,promise,fibers在 RubyonRails 和 NodeJS 开发者之间曾经引起宗教类的口水战 顺序编程风格 Vs 基于事件编程 目前大部分 Web 应用包括 RubyonRails JavaSpring Django 都是使用顺序编程风格 顺序编程是非常简单和可读的 大部分开发者都是以顺序方式思考 喜欢将一个应用逻辑划分为顺序的时序步骤 顺序编程通常会导致堵塞 I O 因为线程是遵循先来后到的多任务方式 而不是一种

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号