Spring Batch 4.3 中的新增功能
Spring Batch 4.3 中的新增功能
此版本带来了许多新功能、性能改进、 依赖项更新和 API 弃用。本节介绍最 重要更改。有关更改的完整列表,请参阅发行说明。
新功能
新的同步ItemStreamWriter
与 此版本类似,该版本引入了 .此功能在多线程步骤中非常有用
其中并发线程需要同步,以免覆盖彼此的写入。SynchronizedItemStreamReader
SynchronizedItemStreamWriter
用于命名查询的新 JpaQueryProvider
此版本引入了一个新的 next to 以简化 JPA 命名查询的配置,当
使用 :JpaNamedQueryProvider
JpaNativeQueryProvider
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 项目读取器,它使用此功能来
stream 以类似于 和 的基于游标的方式生成。JdbcCursorItemReader
HibernateCursorItemReader
新的 JobParametersIncrementer 实现
与 类似,此版本添加了一个基于 Spring Framework 的新功能。RunIdIncrementer
JobParametersIncrementer
DataFieldMaxValueIncrementer
Java 记录支持
该版本新增支持在面向块的步骤中使用 Java 记录作为项。
新增支持从平面文件到
Java 记录,如以下示例所示:RecordFieldSetMapper
@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();
}
在此示例中,类型是定义如下的 Java 记录:Person
public record Person(int id, String name) { }
使用 new 映射数据
将 file 设置为 .FlatFileItemReader
RecordFieldSetMapper
persons.csv
Person
性能改进
在 RepositoryItemWriter 中使用批量写入
直到版本 4.2,为了在 中使用,
需要扩展 Writer 并覆盖 。CrudRepository#saveAll
RepositoryItemWriter
write(List)
在此版本中,已更新为默认使用。RepositoryItemWriter
CrudRepository#saveAll
依赖项更新
此版本将依赖的 Spring 项目更新到以下版本:
-
Spring 框架 5.3
-
春季数据 2020.0
-
Spring 集成 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 中删除它。