# SpringBatch **Repository Path**: naclnezn/spring-batch ## Basic Information - **Project Name**: SpringBatch - **Description**: 一款基于 Spring 的企业批处理框架 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-08-21 - **Last Updated**: 2025-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SpringBatch ## 介绍 Spring Batch 是一个轻量级的开源框架,它提供了一种简单的方式来处理大量的数据。 它基于Spring框架,提供了一套批处理框架,可以处理各种类型的批处理任务,如ETL、数据导入/导出、报表生成等。 Spring Batch提供了一些重要的概念,如Job、Step、ItemReader、ItemProcessor、ItemWriter等, 这些概念可以帮助我们构建可重用的批处理应用程序。 通过Spring Batch,我们可以轻松地实现批处理的并发、容错、重试等功能, 同时也可以方便地与其他Spring组件集成,如Spring Boot、Spring Data等。 总之,Spring Batch是一个非常强大、灵活、易于使用的批处理框架,可以帮助我们快速构建高效、可靠的批处理应用程序。 ## 分层架构 ![1724220298786.png](imgs/1724220298786.png) 可以看到它分为三层,分别是: - Application应用层:包含了所有任务batch jobs和开发人员自定义的代码,主要是根据项目需要开发的业务流程等 - Batch Core核心层:包含启动和管理任务的运行环境类,如JobLauncher等 - Batch Infrastructure基础层:上面两层是建立在基础层之上的,包含基础的读入reader和写出writer、重试框架等 ## 主要概念 ![1724220417622.png](imgs/1724220417622.png) ### JobRepository 专门负责与数据库打交道,对整个批处理的新增、更新、执行进行记录。所以Spring Batch是需要依赖数据库来管理的 ### 任务启动器JobLauncher 负责启动任务Job ### 任务Job Job是封装整个批处理过程的单位,跑一个批处理任务,就是跑一个Job所定义的内容 ![1724220488617.png](imgs/1724220488617.png) Job的一些相关概念: - Job:封装处理实体,定义过程逻辑。 - JobInstance:Job的运行实例,不同的实例,参数不同,所以定义好一个Job后可以通过不同参数运行多次 - JobParameters:与JobInstance相关联的参数 - JobExecution:代表Job的一次实际执行,可能成功、可能失败 ### 步骤Step Step是对Job某个过程的封装,一个Job可以包含一个或多个Step,一步步的Step按特定逻辑执行,才代表Job执行完成 ![1724220562417.png](imgs/1724220562417.png) 通过定义```Step```来组装```Job```可以更灵活地实现复杂的业务逻辑 ### 2.2.5 输入——处理——输出 所以,定义一个Job关键是定义好一个或多个Step,然后把它们组装好即可。 而定义Step有多种方法,但有一种常用的模型就是输入——处理——输出, 即Item Reader、Item Processor和Item Writer。 比如通过Item Reader从文件输入数据,然后通过Item Processor进行业务处理和数据转换, 最后通过Item Writer写到数据库中去。 Spring Batch为我们提供了许多开箱即用的Reader和Writer,非常方便。