Spring Batch 4.3 中的新增功能

Spring Batch 4.3 中的新增功能

此版本具有许多新功能、性能改进、 依赖项更新和 API 弃用。本节介绍的 重要变化。有关更改的完整列表,请参阅发行说明spring-doc.cadn.net.cn

新功能

新的同步 ItemStreamWriter

类似于SynchronizedItemStreamReader,此版本引入了SynchronizedItemStreamWriter.此功能在多线程步骤中很有用 其中并发线程需要同步,以免覆盖彼此的写入。spring-doc.cadn.net.cn

命名查询的新 JpaQueryProvider

此版本引入了一个新的JpaNamedQueryProvider旁边的JpaNativeQueryProvider在以下情况下简化 JPA 命名查询的配置 使用JpaPagingItemReader:spring-doc.cadn.net.cn

JpaPagingItemReader<Foo> reader = new JpaPagingItemReaderBuilder<Foo>()
   .name("fooReader")
   .queryProvider(new JpaNamedQueryProvider("allFoos", Foo.class))
   // set other properties on the reader
   .build();

新的 JpaCursorItemReader 实现

JPA 2.2 添加了将结果作为游标流式传输的功能,而不仅仅是分页。 此版本引入了一个新的 JPA 项目阅读器,它使用此功能来 stream 结果以基于光标的方式,类似于JdbcCursorItemReaderHibernateCursorItemReader.spring-doc.cadn.net.cn

新的 JobParametersIncrementer 实现

类似于RunIdIncrementer,此版本添加了一个新的JobParametersIncrementer即基于DataFieldMaxValueIncrementer来自 Spring Framework。spring-doc.cadn.net.cn

GraalVM 支持

此版本添加了对在 GraalVM 上运行 Spring Batch 应用程序的初始支持。 该支持仍处于实验阶段,将在未来的版本中得到改进。spring-doc.cadn.net.cn

Java 记录支持

此版本添加了对将 Java 记录用作面向块的步骤中的项的支持。 新增的RecordFieldSetMapper支持从平面文件到以下内容的数据映射 Java 记录,如以下示例所示:spring-doc.cadn.net.cn

@Bean
public FlatFileItemReader<Person> itemReader() {
	return new FlatFileItemReaderBuilder<Person>()
			.name("personReader")
			.resource(new FileSystemResource("persons.csv"))
			.delimited()
			.names("id", "name")
			.fieldSetMapper(new RecordFieldSetMapper<>(Person.class))
			.build();
}

在此示例中,Persontype 是定义如下的 Java 记录:spring-doc.cadn.net.cn

public record Person(int id, String name) { }

FlatFileItemReader使用新的RecordFieldSetMapper映射数据来源 这persons.csv文件到类型的记录Person.spring-doc.cadn.net.cn

性能改进

在 RepositoryItemWriter 中使用批量写入

直到 4.2 版,才能使用CrudRepository#saveAllRepositoryItemWriter, 需要扩展编写器并覆盖write(List).spring-doc.cadn.net.cn

在此版本中,RepositoryItemWriter已更新为使用CrudRepository#saveAll默认情况下。spring-doc.cadn.net.cn

在 MongoItemWriter 中使用批量写入

MongoItemWriter使用MongoOperations#save()在 for 循环中 将项目保存到数据库。在此版本中,作者已 更新以使用org.springframework.data.mongodb.core.BulkOperations相反。spring-doc.cadn.net.cn

作业启动/重启时间改进

实施JobRepository#getStepExecutionCount()用于加载 所有作业执行和步骤执行都在内存中进行计数,以对框架进行计数 边。在此版本中,实现已更改为对 数据库中具有 SQL 计数查询,以便计算步骤执行。spring-doc.cadn.net.cn

依赖项更新

此版本将依赖的 Spring 项目更新到以下版本:spring-doc.cadn.net.cn

弃用

弃用 API

以下是此版本中已弃用的 API 列表:spring-doc.cadn.net.cn

建议的替换可以在每个已弃用的 API 的 Javadoc 中找到。spring-doc.cadn.net.cn

弃用 SQLFire 支持支持

SQLFire 自 2014 年 11 月 1 日起处于 EOL 状态。此版本弃用了对使用 SQLFire 的支持 作为作业存储库,并计划在 5.0 版中将其删除。spring-doc.cadn.net.cn