SpringBoot 5.0 Starter批处理Spring Batch配置【大数据】

浅浩酱_5883

浅浩酱_5883

2026-08-07

554人浏览

原创

在Spring Boot 3.2+(Spring Batch 5.0+)中启用批处理需四步:1. 确保spring-boot-starter-batch与spring-boot-starter-data-jpa共存,改用jakarta.persistence-api和mysql-connector-j 8.3+;2. application.yml中设spring.batch.jdbc.initialize-schema: always;3. 显式声明名为transactionManager的PlatformTransactionManager Bean;4. 手动配置JobRepository、JobLauncher并用@Bean覆盖@EnableBatchProcessing默认bean。

springboot 5.0 starter批处理spring batch配置【大数据】

在Spring Boot 5.0环境下快速启用Spring Batch批处理能力,需绕过自动配置陷阱、显式声明事务管理器、正确初始化元数据表,并适配Java 17+的模块化要求——这些步骤缺一不可,否则Job启动时会抛出NoSuchBeanDefinitionException或SchemaManagementException。

确认依赖与版本兼容性

打开pom.xml,确保使用Spring Boot 3.2+(对应Spring Batch 5.0+),【spring-boot-starter-batch必须与spring-boot-starter-data-jpa共存】,否则ItemWriter无法注入JPA事务上下文。

移除旧版javax.persistence-api依赖,改用jakarta.persistence-api:jakarta.persistencejakarta.persistence-api。

MySQL驱动必须升级至mysql-connector-j 8.3+,否则连接池初始化失败。

强制初始化Batch元数据表

Spring Boot 3.x默认禁用schema自动创建,必须显式启用:

在application.yml中添加:
spring:
  batch:
    jdbc:
      initialize-schema: always
  datasource:
    url: jdbc:mysql://localhost:3306/batch_meta?serverTimezone=Asia/Shanghai

【若使用H2内存库,必须同时开启h2.console.enabled=true,否则无法验证表是否生成成功】

启动应用后,手动访问http://localhost:8080/h2-console,用sa账号登录,执行SELECT * FROM BATCH_JOB_INSTANCE验证表已建好。

声明PlatformTransactionManager Bean

Spring Batch 5.0不再接受默认PlatformTransactionManager,必须手工定义:

在配置类中添加:

@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
  return new DataSourceTransactionManager(dataSource);
}

该Bean名称必须为transactionManager,不能是txManager或其他别名,否则Step执行时抛出TransactionRequiredException。

SpringBoot升级-BW
SpringBoot升级-BW

将 Spring Boot 2.7 项目升级到 Spring Boot 3.5 的实战流程,覆盖版本基线、依赖坐标替换、Jakarta 迁移、配置兼容、异步上下文传递改造与验证门禁。用于企业多模块 Maven 项目升级与排障。

下载

配置JobRepository与JobLauncher

第一步:注入JobRepository并设置隔离级别

@Bean
public JobRepository jobRepository(DataSource dataSource, PlatformTransactionManager transactionManager)
    throws Exception {
  JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
  factory.setDataSource(dataSource);
  factory.setTransactionManager(transactionManager);
  factory.setIsolationLevelForCreate("ISOLATION_DEFAULT");
  return factory.getObject();
}

第二步:构建JobLauncher,禁用默认同步模式

@Bean
public JobLauncher jobLauncher(JobRepository jobRepository) throws Exception {
  SimpleJobLauncher launcher = new SimpleJobLauncher();
  launcher.setJobRepository(jobRepository);
  launcher.setTaskExecutor(new SyncTaskExecutor());
  return launcher;
}

第三步:启用@EnableBatchProcessing注解,但必须配合@Bean方式覆盖其默认bean,否则JobBuilderFactory无法识别自定义transactionManager。

定义一个最小可运行Job

方法一:基于Chunk的文件读写Job

@Bean
public Job csvImportJob(JobRepository jobRepository, Step csvStep) {
  return new JobBuilder("csvImportJob", jobRepository)
    .start(csvStep)
    .build();
}

方法二:纯内存数据处理Job(用于单元测试)

@Bean
public Job memoryTestJob(JobRepository jobRepository, Step memoryStep) {
  return jobBuilderFactory.get("memoryTestJob")
    .repository(jobRepository)
    .start(memoryStep)
    .build();
}

注意:Job名称必须唯一,重复定义会导致ApplicationContext refresh失败。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
大数据分析工具有哪四个
大数据分析工具有哪四个

大数据分析的四个工具分别是rapidminer、Hpcc、Hadoop和Pentaho bi。大数据分析用于从各种来源生成的原始数据中提取有价值的数据。这些数据帮助我们获得有意义的见解、隐藏的模式、未知的相关性、市场趋势等等,具体取决于行业。大数据分析的主要动机是提供有价值的见解,以便为未来做出更好的决策。php中文网为大家带来了大数据分析的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

5776

5

Java 大数据处理基础(Hadoop 方向)
Java 大数据处理基础(Hadoop 方向)

本专题聚焦 Java 在大数据离线处理场景中的核心应用,系统讲解 Hadoop 生态的基本原理、HDFS 文件系统操作、MapReduce 编程模型、作业优化策略以及常见数据处理流程。通过实际示例(如日志分析、批处理任务),帮助学习者掌握使用 Java 构建高效大数据处理程序的完整方法。

2025.12.08

1269

12

大数据专业学习教程
大数据专业学习教程

本专题整合了大数据专业学习相关教程,阅读专题下面的文章了解更多详细内容。

2026.01.05

243

5

python处理大数据合集
python处理大数据合集

本专题整合了python处理大数据相关教程,阅读专题下面的文章了解更多详细内容。

2026.01.05

526

22

spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2025.08.06

2751

22

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

2026.01.26

497

25

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

60

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

40

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

140

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 193人学习

大数据(MySQL)视频教程完整版
大数据(MySQL)视频教程完整版

共200课时 | 28.7万人学习

PHP会话控制/文件上传/分页技术
PHP会话控制/文件上传/分页技术

共22课时 | 2.9万人学习