SpringBatch实践

简介: 理应用程序。Spring Batch 建立在人们期望的 Spring Framework 特性(生产力、基于 POJO 的开发方法和一般易用性)的基础上,同时使开发人员可以在必要时轻松访问和使用更高级的企业服务。Spring Batch 不是一个调度框架。在商业和开源领域都有许多优秀的企业调度程序(例如 Quartz、Tivoli、Control-M 等)。Spring Batch 旨在与调度程序结合使用,而不是替代调度程序。

一、SpringBatch介绍
Spring Batch 是一个轻量级、全面的批处理框架,旨在支持开发对企业系统的日常操作至关重要的健壮的批处理应用程序。Spring Batch 建立在人们期望的 Spring Framework 特性(生产力、基于 POJO 的开发方法和一般易用性)的基础上,同时使开发人员可以在必要时轻松访问和使用更高级的企业服务。Spring Batch 不是一个调度框架。在商业和开源领域都有许多优秀的企业调度程序(例如 Quartz、Tivoli、Control-M 等)。Spring Batch 旨在与调度程序结合使用,而不是替代调度程序。
二、业务场景
我们在业务开发中经常遇到这种情况:

Spring Batch 支持以下业务场景:

定期提交批处理。
并发批处理:并行处理作业。
分阶段的企业消息驱动处理。
大规模并行批处理。
失败后手动或计划重启。
相关步骤的顺序处理(扩展到工作流驱动的批次)。
部分处理:跳过记录(例如,在回滚时)。
整批交易,适用于批量较小或已有存储过程或脚本的情况。

三、基础知识
3.1、整体架构

官方文档:阅读地址

0.0.png

0.2.png

3.2、核心接口

ItemReader: is an abstraction that represents the output of a Step, one batch or chunk of items at a time
ItemProcessor:an abstraction that represents the business processing of an item.
ItemWriter: is an abstraction that represents the output of a Step, one batch or chunk of items at a time.

大体即为 输入→数据加工→输出 ,一个Job定义多个Step及处理流程,一个Step通常涵盖ItemReader、ItemProcessor、ItemWriter
四、基础实操
4.0、引入SpringBatch
🔖 pom文件引入springboot

org.springframework.boot
spring-boot-starter-parent
2.2.5.RELEASE
<relativePath/>

复制代码
🔖 pom文件引入spring-batch及相关依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-batch</artifactId>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>


复制代码
🔖 mysql创建依赖的库表

sql脚本的jar包路径: .....\maven\repository\org\springframework\batch\spring-batch-core\4.2.1.RELEASE\spring-batch-core-4.2.1.RELEASE.jar!\org\springframework\batch\core\schema-mysql.sql

🔖启动类标志@EnableBatchProcessing
@SpringBootApplication
@EnableBatchProcessing
public class SpringBatchStartApplication
{

public static void main(String[] args) {  
    SpringApplication.run(SpringBatchStartApplication.class, args);  
}  

}
复制代码
🔖FirstJobDemo
@Component
public class FirstJobDemo {

@Autowired  
private JobBuilderFactory jobBuilderFactory;  
@Autowired  
private StepBuilderFactory stepBuilderFactory;  

@Bean  
public Job firstJob() {  
    return jobBuilderFactory.get("firstJob")  
            .start(step())  
            .build();  
}  

private Step step() {  
    return stepBuilderFactory.get("step")  
            .tasklet((contribution, chunkContext) -> {  
                System.out.println("执行步骤....");  
                return RepeatStatus.FINISHED;  
            }).build();  
}  

}

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
域名解析 移动开发 负载均衡
阿里云DNS常见问题之DNS负载均衡调加权模式失败如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
6月前
|
人工智能 API 数据处理
【最新】OpenClaw阿里云/本地部署保姆级教程+Skills集成+百炼API配置+常见问题解答
2026年3月,OpenClaw(小龙虾AI)的Skills生态已突破1.3万个,涵盖办公自动化、数据处理、联网搜索、AI绘画、定时任务等全场景,成为OpenClaw从“单纯对话”升级为“全能工具”的核心支撑。很多用户部署完OpenClaw后,发现本体只能简单聊天,无法实现自动化办公、数据处理等实用功能,核心原因就是没有正确集成Skills——就像智能手机只装了系统,没装任何应用,无法发挥真正价值。
1899 15
|
6月前
|
存储 新零售 人工智能
【云故事探索】 NO.21 | 良品铺子:70TB 核心数据“闪电”上云,重塑零食帝国的数字底座
本期,我们走进零售行业领军者——良品铺子,聆听他们如何将运行十年的核心系统搬上云端,打造更智能的“零食帝国”。
|
存储 缓存 分布式计算
高内存场景必读!阿里云r7/r9i/r8y/r8i实例架构、性能、价格多维度对比
阿里云针对高性能需求场景,一般会在活动中推出内存型r7、内存型r9i、内存型r8y和内存型r8i这几款内存型实例规格的云服务器。相比于活动内的经济型e和通用算力型u1等实例规格,这些内存型实例在性能上更为强劲,尤其适合对内存和计算能力有较高要求的应用场景。这些实例规格的云服务器在处理器与内存的配比上大多为1:8,但它们在处理器架构、存储性能、网络能力以及安全特性等方面各有千秋,因此适用场景也各不相同。本文将为大家详细介绍内存型r7、r9i、r8y、r8i实例的性能、适用场景的区别以及选择参考。
|
文字识别 C#
基于C#实现照片条形码识别
基于C#实现照片条形码识别
|
机器学习/深度学习 人工智能 编解码
MV-Adapter:上交大、北航和 VAST 等联合开源多视图一致图像生成模型,将预训练的文生图扩散模型转为多视图生成器
MV-Adapter是由北京航空航天大学、VAST和上海交通大学联合开发的多视图一致图像生成模型。该模型能够将预训练的文本到图像扩散模型转化为多视图图像生成器,支持生成高分辨率的多视角图像。
1182 18
MV-Adapter:上交大、北航和 VAST 等联合开源多视图一致图像生成模型,将预训练的文生图扩散模型转为多视图生成器
|
存储
逻辑地址和物理地址转换
逻辑地址和物理地址转换
1666 0
|
应用服务中间件 nginx
HAProxy的高级配置选项-修改报文首部
这篇文章介绍了HAProxy的高级配置选项,特别是如何通过配置来修改HTTP报文首部,包括添加和删除特定的响应头信息,以及如何通过条件判断来控制这些修改。
399 8
|
文字识别
分享:如何ocr识别身份证复印件并导出至excel表格 ? 图片批量识别导出excel表格应用,图片批量识别转excel表格的方法
该软件是一款OCR身份证识别工具,能批量处理图片,自动提取身份证信息并导出为Excel。支持百度网盘和腾讯云盘下载。用户界面直观,操作简单,适合新手。识别过程包括:打开图片、一键识别、导出结果。特别注意,此程序仅适用于身份证识别,不适用于其他类型的图片识别。
2748 1
分享:如何ocr识别身份证复印件并导出至excel表格 ? 图片批量识别导出excel表格应用,图片批量识别转excel表格的方法
|
SQL 存储 数据库
Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)
1.1 Hive简介 1.1.1   什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。 1.1.2   为什么使用Hive Ø  直接使用hadoop所面临的问题 人员学习成本太高 项目周期要求太短 MapReduce实现复杂查询逻辑开发难度太大   Ø  为什么要使用Hive 操作接口采用类SQ
28920 0

热门文章

最新文章