Spring Boot 3整合springbatch5新特性

springbatch定义

Spring Batch是一种轻量级、全面的批处理框架,旨在支持开发健壮的批处理日常企业级系统。

spring batch特性

Spring batch实现的特性包括数据验证、格式化输出、可重用、基于组块的处理、事务管理、声明式IO、基于Web的管理界面、可重启/重试。
Spring batch提供了处理大量记录的必不可少的高可用功能,包括日志追踪、事务管理、定时任务处理统计、定时任务重启、跳过,以及资源管理。它也提供了一些更高级的技术服务和特性,通过优化和分区技术使这些服务和特性可支持更高体量和性能的批处理工作。无论是简单的还是复杂的大容量批处理作业,都可以以高度可伸缩的方式利用该框架来处理大量信息。
springbatch架构有三层:应用层、核心层、基础设施层
在这里插入图片描述

基于springboot3+springbatch5的新特性

springboot3+springbatch5的主要如下新特性

  1. java17
  2. 主要依赖关系升级
  3. 批处理基础架构配置升级
  4. 批处理测试配置升级
  5. 定时任务参数处理升级
  6. 执行上下文序列化更新
  7. 系统命令任务片升级
  8. 新特性
  9. 去除特性

java17

和springboot3的jdk版本一样,最少java17。

主要依赖升级

springbatch5的主要依赖升级这些:

  • spring 6
  • spring intergration 6
  • spring data 3
  • spring aqmp 3
  • spring for apache kafka 3
  • micrometer 1.10
    环境迁移有
    jakarta ee 9
    hibernate 6

批处理基础架构配置升级

maven依赖

 	<parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>3.1.0</version>
    </parent>
    <dependencies>
     	<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    <!--数据库驱动-->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--核心依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-batch</artifactId>
        </dependency>
    </dependencies>
    

概述

在早期,Spring Batch提供了基于映射的作业存储库和作业浏览器实现使用内存中的作业存储库。这些实现在版本4中已弃用并在版本5中完全删除。建议使用基于jdbc的替换使用嵌入式数据库(如H2、HSQL等)实现。
在spring batch 5中,注解@EnableBatchProcessing配置一个基于jdbc的JobRepository,此配置是需要DataSource和PlatformTransactionManager两个spring bean。DataSource可依赖于外部数据库和引用嵌入式数据库来存储内存中的作业存储库。

java配置类新版

@Configuration
@EnableBatchProcessing
public class BatchConfig {
	@Autowired
    private JobRepository jobRepository;

	@Autowired
    private PlatformTransactionManager platformTransactionManager;

    @Bean
    public Step step1() {
        return new StepBuilder("step1", jobRepository)
                .tasklet((contribution, chunkContext) -> {
                            System.out.println(">>>>>>>>>>>>>>>>>>> hello world");
                            return RepeatStatus.FINISHED;
                        }, platformTransactionManager
                ).build();

    @Bean
    public Job helloJob(){
        return new JobBuilder( "helloJob", jobRepository)
                .build();
    }
}

或者使用如下的

@Slf4j
@Configuration
public class BatchConfig extends DefaultBatchConfiguration {

    @Bean
    public Step step1(JobRepository jobRepository) {
        return new StepBuilder("step1", jobRepository)
                .tasklet((contribution, chunkContext) -> {
                            System.out.println(">>>>>>>>>>>>>>>>>>> hello world");
                            return RepeatStatus.FINISHED;
                        }, getTransactionManager()
                ).build();
    }

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

删除参数

Spring Batch 5 还删除了对 SQLFire、JSR-352(Java 平台的批处理应用)和 GemFire 的支持。

批处理参数升级

这个版本增加了对使用任何类型作为作业参数的支持,而不只是像v4中那样的4个预定义类型(long、double、字符串、日期)。此更改会影响作业参数在数据库中的保存方式(每个预定义类型不再有4个不同的列)。请检查BATCH_JOB_EXECUTION_PARAMS中的列更改以获取DDL更改。参数类型的完全限定名现在作为字符串以及参数值持久化。字符串文字可以通过标准的Spring转换服务转换为参数类型。标准转换服务可以丰富任何必需的转换器,以将用户特定的类型转换为字符串文字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值