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使用JDBC动态创建数据表及SQL预处理的方法

    java使用JDBC动态创建数据表及SQL预处理的方法

    这篇文章主要介绍了java使用JDBC动态创建数据表及SQL预处理的方法,涉及JDBC操作数据库的连接、创建表、添加数据、查询等相关实现技巧,需要的朋友可以参考下
    2017-08-08
  • GraalVM native-image编译后quarkus的超音速启动

    GraalVM native-image编译后quarkus的超音速启动

    这篇文章主要介绍了经过GraalVM native-image编译后的quarkus,来带大家验证一下号称超音速亚原子的quarkus是否名副其实,有需要的朋友可以借鉴参考下,希望能够有所包帮助
    2022-02-02
  • Mybatis CURD及模糊查询功能的实现

    Mybatis CURD及模糊查询功能的实现

    这篇文章主要介绍了Mybatis CURD及模糊查询功能的实现,有查询删除,插入,更新功能,通过实例代码讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-06-06
  • Java如何替换RequestBody和RequestParam参数的属性

    Java如何替换RequestBody和RequestParam参数的属性

    近期由于接手的老项目中存在所有接口中新增一个加密串来给接口做一个加密效果,所以就研究了一下Http请求链路,发现可以通过 javax.servlet.Filter去实现,这篇文章主要介绍了Java替换RequestBody和RequestParam参数的属性,需要的朋友可以参考下
    2023-10-10
  • 详解java接口(interface)在不同JDK版本中的变化

    详解java接口(interface)在不同JDK版本中的变化

    这篇文章主要介绍了详解java接口(interface)在不同JDK版本中的变化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • @SpringBootConfiguration重复加载报错问题解决

    @SpringBootConfiguration重复加载报错问题解决

    @SpringBootApplication 注解的 exclude 属性用于排除特定的自动配置类,而不是用于排除主配置类本身,因此,不能通过 exclude 属性来排除主配置类的加载,这篇文章主要介绍了@SpringBootConfiguration重复加载报错,需要的朋友可以参考下
    2024-08-08
  • spring boot启动后直接关闭了的问题解决

    spring boot启动后直接关闭了的问题解决

    本文主要介绍了spring boot启动后直接关闭了的问题解决,SpringBoot项目启动后自动关闭的原因是未引入web依赖,导致以普通Java项目运行,下面就来介绍一下解决方法,感兴趣的可以了解一下
    2025-02-02
  • Spring Boot实战之逐行释义Hello World程序

    Spring Boot实战之逐行释义Hello World程序

    spring boot 是基于Spring的一个框架,Spring boot帮我们集成很多常用的功能,使得整个配置更加简单。这篇文章主要介绍了Spring Boot实战之逐行释义Hello World,需要的朋友可以参考下
    2017-12-12
  • Spring Boot中的WebSocketMessageBrokerConfigurer接口使用

    Spring Boot中的WebSocketMessageBrokerConfigurer接口使用

    在SpringBoot中,我们可以使用 WebSocketMessageBrokerConfigurer接口来配置WebSocket消息代理,以实现实时通信,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • 详解Mybatis中javaType和ofType的区别

    详解Mybatis中javaType和ofType的区别

    本文主要介绍了详解Mybatis中javaType和ofType的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05

最新评论