Spring Batch 4.3 中的新增功能

Spring Batch 4.3 中的新增功能

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

新功能

新的同步ItemStreamWriter

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

用于命名查询的新 JpaQueryProvider

此版本引入了新的JpaNamedQueryProviderJpaNativeQueryProvider为了简化 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,该版本新增了一个新的JobParametersIncrementerDataFieldMaxValueIncrementer来自 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.csvfile 设置为类型为Person.spring-doc.cadn.net.cn

性能改进

在 RepositoryItemWriter 中使用批量写入

直到 4.2 版本,为了使用CrudRepository#saveAllRepositoryItemWriter, 需要扩展 Writer 并覆盖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 日起停止服务。该版本废弃了对使用 SQLFire 的支持 作为作业存储库,并计划在版本 5.0 中删除它。spring-doc.cadn.net.cn