-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Spring Batch 6.0 Migration Guide
This document is meant to help you migrate your applications to Spring Batch 6.0. Spring Batch 6 does not change the minimum required Java version which remains Java 17+.
Spring Batch 6 upgrades its Spring dependencies to the following versions:
- Spring Framework 7
- Spring Integration 4
- Spring Data 4
- Spring AMQP 4
- Spring for Apache Kafka 4
- Micrometer 1.15
Before v6, the @EnableBatchProcessing
annotation was tied to a JDBC-based infrastructure. This is not the case anymore. Two new annotations have been introduced to configure the underlying job repository: @EnableJdbcJobRepository
and EnableMongoJobRepository
.
Starting from v6, @EnableBatchProcessing
allows you to configure common attributes for the batch infrastructure, while store-specific attributes can be specified with the new dedicated annotations. Here is an example to migrate a JDBC configuration from v5 to v6:
// v5
@EnableBatchProcessing(dataSourceRef = "batchDataSource", taskExecutorRef = "batchTaskExecutor")
class MyJobConfiguration {
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("job", jobRepository)
// job flow omitted
.build();
}
}
// v6
@EnableBatchProcessing(taskExecutorRef = "batchTaskExecutor")
@EnableJdbcJobRepository(dataSourceRef = "batchDataSource")
class MyJobConfiguration {
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("job", jobRepository)
// job flow omitted
.build();
}
}
Similar to the annotation-based approach, the programmatic model based on DefaultBatchConfiguration
has been updated by introducing two new configuration classes to define store-specific attributes: JdbcDefaultBatchConfiguration
and MongoDefaultBatchConfiguration
.
Here is an example to migrate a JDBC configuration from v5 to v6:
// v5
class MyJobConfiguration extends DefaultBatchConfiguration {
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("job", jobRepository)
// job flow omitted
.build();
}
@Override
protected DataSource getDataSource() {
return new MyBatchDataSource();
}
}
// v6
class MyJobConfiguration extends JdbcDefaultBatchConfiguration {
@Bean
public Job job(JobRepository jobRepository) {
return new JobBuilder("job", jobRepository)
// job flow omitted
.build();
}
@Override
protected DataSource getDataSource() {
return new MyBatchDataSource();
}
}
- The
DefaultBatchConfiguration
now configures a "resourceless" batch infrastructure (ie aResourcelessJobRepository
and aResourcelessTransactionManager
). This is to remove the need for an additional dependency to an in-memory database for those who do not need batch meta-data. - The configuration of a
JobExplorer
bean has been removed. This is due to the fact thatJobRepository
now extendsJobExplorer
and there is no need for aJobExplorer
bean anymore, which is now deprecated (See "Deprecated APIs" section). - The configuration of a
JobLauncher
has been replaced with aJobOperator
. This is due to the fact thatJobOperator
now extendsJobLauncher
and there is no need for aJobLauncher
bean anymore, which is now deprecated (See "Deprecated APIs" section).
TBD
The following APIs have been deprecated in version 6.0:
TBD
Please refer to the Javadoc of each API for more details about the suggested replacement.
TBD
The following APIs were deprecated in previous versions and have been removed in this release:
TBD
Moreover, the following APIs have been removed/updated without deprecation:
TBD
TBD