springbatch使用过程详解

 更新时间:2025年10月08日 10:23:23   作者:nu11cat  
Spring Batch 是一个功能强大且可扩展的批量处理框架,旨在帮助开发者高效地处理大量数据的任务,本文给大家介绍springbatch使用过程详解,感兴趣的朋友一起看看吧

什么是 Spring Batch?

Spring Batch 是一个功能强大且可扩展的批量处理框架,旨在帮助开发者高效地处理大量数据的任务。它提供了一系列与批处理相关的功能,比如批量数据读取、处理、写入、事务管理、作业执行和监控等。Spring Batch 适用于需要在后台处理大规模数据或定时任务的应用,广泛应用于数据迁移、数据处理、批量报表生成等场景。

定义与特点

  • 批量任务支持:Spring Batch 专注于批量任务的管理,包括任务的执行、事务的处理、异常的管理、作业的调度等。
  • 事务管理:内置强大的事务支持,保证数据的一致性和完整性。在处理大量数据时,Spring Batch 能够确保数据在多个步骤之间的可靠性。
  • 高效性与可扩展性:针对大数据量的处理,Spring Batch 提供了流式读取和写入的能力,支持分片、并行处理等高效机制。
  • 作业监控与管理:Spring Batch 提供内置的作业监控功能,可以追踪作业执行状态、查看历史执行记录、获取执行细节。

常见应用场景

  • 数据迁移:将大量数据从一个数据库迁移到另一个数据库,或者从文件系统迁移到数据库等。
  • 批量数据处理:对海量数据进行清洗、转换和加载(ETL过程),例如从多个数据源合并数据到数据仓库。
  • 定时任务处理:处理定时生成的报告、日志分析、定期清理过期数据等。
  • 数据同步:定时同步不同系统之间的数据。

背景:并发抽取接口数据。通过ai生成后调试了老半天才能使,记录一下

主要是处理器Processor, 读取器Reader和写库用的Writer

使用了框架的Shell功能,挺强大的。

如果要对接口读取的数据做过滤,可以增加执行参数,如:–skip-filter

  • 这个参数我是用在Processor中的,因为要对已经获取的数据进行过滤。但其中要注意的点就是需要再处理器中获取这个参数
public class ExamReportItemProcessor implements ItemProcessor<ExamReportDto, ExamReportEntity> {
    @Autowired
    private InpatientValidationService inpatientValidationService;
    private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    private boolean skipFilter = false;
    @BeforeStep
    public void beforeStep(StepExecution stepExecution) {
        JobParameters jobParameters = stepExecution.getJobParameters();
        String skipFilterStr = jobParameters.getString("skipFilter");
        this.skipFilter = "true".equalsIgnoreCase(skipFilterStr);
    }

还要注意:并发执行命令需要用到注解@StepScope,否则会陷入分批次拉数据却只调用一次的尴尬, 调了许久

# 这是在BatchConfig.java中的配置
@Bean
@StepScope
 public ExamReportItemReader examReportItemReader() {
     return new ExamReportItemReader();
 }
 @Bean
 @StepScope
 public ExamReportItemProcessor examReportItemProcessor() {
     return new ExamReportItemProcessor();
 }

另外我是用cursor的auto模式调试的,出现问题就将问题和输入的命令进行反馈,经历了4-5次才能跑通了

放个私有的gitee地址

过程记录

# 使用curl检测接口,使用的POST格式,(接口每次只返回一页数据和总页数.为了方便,直接全部保存)
curl -X POST “http:xxxx“ -H "Content-Type: application/json" -d '{"StartTime": "2025-01-01 00:00:00"....}'
# 使用json_pp美化json语句,挺方便,没有额外安装工具
echo '{"name":"john","age":30}' | json_pp!74

到此这篇关于springbatch使用过程详解的文章就介绍到这了,更多相关springbatch使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java servlet结合Oracle搭建java的web开发环境

    java servlet结合Oracle搭建java的web开发环境

    今天我将与大家分享一下我学JAVA WEB写的一些小实例 ,我个人是不太喜欢书本上的晦涩的概念的,所以我花了更多的时间在一些应用实例上,我觉得这样的学习方式很适合我,由简到繁,由浅入深
    2015-12-12
  • 详解利用Spring的AbstractRoutingDataSource解决多数据源的问题

    详解利用Spring的AbstractRoutingDataSource解决多数据源的问题

    本篇文章主要介绍了详解利用Spring的AbstractRoutingDataSource解决多数据源的问题。具有一定的参考价值,有兴趣的可以了解一下。
    2017-03-03
  • 基于Java多线程notify与notifyall的区别分析

    基于Java多线程notify与notifyall的区别分析

    本篇文章对Java中多线程notify与notifyall的区别进行了详细的分析介绍。需要的朋友参考下
    2013-05-05
  • IDEA生成servlet程序的实现步骤

    IDEA生成servlet程序的实现步骤

    这篇文章主要介绍了IDEA生成servlet程序的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java 时间相减算法题解示例

    Java 时间相减算法题解示例

    这篇文章主要为大家介绍了Java 时间相减算法题解示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Java Management Extensions管理扩展原理解析

    Java Management Extensions管理扩展原理解析

    这篇文章主要介绍了Java Management Extensions管理扩展原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • SpringBoot结合Redis实现序列化的方法详解

    SpringBoot结合Redis实现序列化的方法详解

    Spring提供了一个RedisTemplate来进行对Redis的操作,但是RedisTemplate默认配置的是使用Java本机序列化。如果要对对象操作,就不是那么的方便。所以本文为大家介绍了另一种SpringBoot结合Redis实现序列化的方法,需要的可以参考一下
    2022-06-06
  • Java使用ChatGPT的API详解

    Java使用ChatGPT的API详解

    OpenAI API 几乎可以应用于任何涉及理解或生成自然语言或代码的任务。本文将带你们介绍Java如何使用ChatGPT的API,感兴趣的同学可以跟着小编一起来学习
    2023-04-04
  • Spring操作JdbcTemplate数据库的方法学习

    Spring操作JdbcTemplate数据库的方法学习

    这篇文章主要为大家介绍了Spring操作JdbcTemplate数据库方法学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Elasticsearch常用DSL语法巧记

    Elasticsearch常用DSL语法巧记

    这篇文章主要为大家介绍了Elasticsearch常用DSL语法巧记,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01

最新评论