Spring Batch 4.3 中的新增功能
此版本附带许多新功能、性能改进、依赖项更新和 API 弃用。本节介绍最重要的更改。有关更改的完整列表,请参阅 发行说明。
新的功能
新同步的 ItemStreamWriter
与 类似SynchronizedItemStreamReader
,此版本引入了
SynchronizedItemStreamWriter
. 此功能在需要同步并发线程以不覆盖彼此的写入的多线程步骤中很有用。
用于命名查询的新 JpaQueryProvider
此版本在使用 时引入了一个新JpaNamedQueryProvider
的,
JpaNativeQueryProvider
以简化 JPA 命名查询的配置JpaPagingItemReader
:
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 项目阅读器,它使用此功能以类似于JdbcCursorItemReader
和的基于光标的方式流式传输结果HibernateCursorItemReader
。
新的 JobParametersIncrementer 实现
与 类似RunIdIncrementer
,此版本添加了一个JobParametersIncrementer
基于DataFieldMaxValueIncrementer
Spring Framework 的新功能。
Java记录支持
此版本增加了对使用 Java 记录作为面向块的步骤中的项目的支持。新增RecordFieldSetMapper
支持平面文件到Java记录的数据映射,如下例所示:
@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();
}
在这个例子中,Person
类型是一个 Java 记录,定义如下:
public record Person(int id, String name) { }
使用FlatFileItemReader
new将文件中的RecordFieldSetMapper
数据映射到类型的记录。persons.csv
Person
性能改进
在 RepositoryItemWriter 中使用批量写入
直到 4.2 版,为了使用CrudRepository#saveAll
in RepositoryItemWriter
,需要扩展 writer 和 override write(List)
。
在此版本中,RepositoryItemWriter
已更新为
CrudRepository#saveAll
默认使用。
依赖更新
此版本将依赖的 Spring 项目更新为以下版本:
-
Spring框架 5.3
-
Spring数据 2020.0
-
弹簧集成 5.4
-
Spring AMQP 2.3
-
Apache Kafka 2.6 的 Spring
-
千分尺 1.5
弃用
API 弃用
以下是此版本中已弃用的 API 列表:
-
org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean
-
org.springframework.batch.core.explore.support.MapJobExplorerFactoryBean
-
org.springframework.batch.core.repository.dao.MapJobInstanceDao
-
org.springframework.batch.core.repository.dao.MapJobExecutionDao
-
org.springframework.batch.core.repository.dao.MapStepExecutionDao
-
org.springframework.batch.core.repository.dao.MapExecutionContextDao
-
org.springframework.batch.item.data.AbstractNeo4jItemReader
-
org.springframework.batch.item.file.transform.Alignment
-
org.springframework.batch.item.xml.StaxUtils
-
org.springframework.batch.core.launch.support.ScheduledJobParametersFactory
-
org.springframework.batch.item.file.MultiResourceItemReader#getCurrentResource()
-
org.springframework.batch.core.JobExecution#stop()
建议的替换可以在每个已弃用 API 的 Javadoc 中找到。
SQLFire 支持弃用
SQLFire自 2014 年 11 月 1 日起停产 。此版本不支持使用 SQLFire 作为作业存储库,并计划在 5.0 版中将其删除。