Releases: spring-projects/spring-batch
v5.0.0
Please refer to the migration guide for more details about upgrade instructions.
⭐ New Features
- Upgrade minimum Java version to 17 #3994
- Add setter with a strongly typed parameter for the transaction isolation level type #4032
- Add getDataSource method to DefaultBatchConfigurer #3872
- Add Micrometer Observation API usage #4065
- Integrate SAP Hana as supported Spring Batch database #1087
- Create Maven BOM for Spring Batch modules #1097
- Allow Lambdas to be passed as item processors in Java DSL #4061
- Best to distinguish
CreateTime
andStartTime
inStepExecution
#4049 - Make charset configurable in
JdbcExecutionContextDao
#795 - Add
FunctionalInterface
annotation where appropriate #4107 - Add
FieldExtractor
implementation for Java records #4159 - Configure the right
FieldExtractor
based on the type of items inFlatFileItemWriterBuilder
#4161 - Configure the right
FieldSetMapper
based on the type of items inFlatFileItemReaderBuilder
#4160 - Change transaction manager type to
JdbcTransactionManager
in default batch configuration #4126 - Add support to customize transaction attributes #4195
- Add support to configure the transaction manager in
SimpleJobOperator
#1078 - Add support to configure the transaction manager in
SimpleJobExplorer
#1307 - Revisit the configuration of infrastructure beans with
@EnableBatchProcessing
#3942 - Add native-image support for
AbstractJobRepositoryFactoryBean
#4144 - Add native hints for Spring Batch #4187
- Use the
Chunk
API consistently #3954 - Parameter types improvement #2122
- Support Java 8 Dates for Job Parameters #1035
- Improve testability of
SystemCommandTasklet
#3955 - String array command with
SystemCommandTasklet
#752 - Add Spring Batch version in the execution context #4215
- Add native reflection hints for
StepContext
andJobContext
#4228 - Add Micrometer counter for job launches in
JobLauncher
#4226 - Add full support for MariaDB as a separate product #3891
- Auto-configure SimpleJobOperator with EnableBatchProcessing and DefaultBatchConfiguration #3941
- Add method getJobInstance in JobExplorer/JobRepository/JobOperator #3930
🚀 Enhancements
- Remove the unconditional exposure of the transaction manager as a bean #3981
- SQL Server Auto-generated Schema - TEXT data type deprecated: #864
- Deprecate support classes implementing interfaces with default methods #3925
- Add default methods in interfaces #3924
- JobParameter must not accept null values #3913
- FlatFileItemWriter now uses charset to determine default encoding #3910
- FlatFileItemReader and FlatFileItemWriter don't have the same default encoding #1154
- Avoid string conversion in ExecutionContextSerializer tests #3986
- Make ScopeConfiguration publicly accessible #3958
- In JOB_PARAMS table DATE_VAL column is updated incorrectly Like "1/1/1970 1:00:00.000000 AM" instead to the current date #1577
- Use default methods in TestExecutionListener #3909
- refactor: simplify boolean expression #3945
- Remove Reflection from StepScopeTestExecutionListener #3908
- Replace deprecated TransactionSynchronizationAdapter #3874
- Remove double brace initialization #3868
- Fix some raw types #3803
- Don't call wrapper constructors directly #3800
- Replace Assert.assertThat with MatcherAssert.assertThat #3804
- Replace #initMocks with MockitoRule #3805
- Refactor deprecated extractDatabaseMetaData #3873
- Simplify GET_LAST_STEP_EXECUTION #3997
- Make countStepExecutions access batch_job_execution only once #3876
- Adjust h2 schema to work with v2.0.x #4043
- Adjust H2PagingQueryProvider to work with v2.x #4047
- Require spring-jdbc in core module #4048
- Rename setJobIncrementer to setJobInstanceIncrementer in JdbcJobInstanceDao #3929
- Rename schema-oracle10g to schema-oracle #1057
- Constructors with var args/Lists #686
- Remove benign [WARNINGS] from batch build #4066
- MongoItemReader#setSort check its argument #4014
- Collection's empty data check using CollectionUtils.isEmpty #4021
- Add
@Nullable
to StepExecution::endTime #4034 - Remove SQLLite Batch database tables before starting tests #4063
- Add
@Nullable
where appropriate inJobExecution
andStepExecution
#4077 - Change default encoding to UTF-8 in
JdbcExecutionContextDao
#3983 - Add
java.util.UUID
to the trusted classes list inJackson2ExecutionContextStringSerializer
#4110 AbstractFileItemWriter
should support java.nio #756- Make JUnit4 dependency optional in
spring-batch-test
#4033 - Replace deprecated
IntegrationFlows
#4155 - Rename
SimpleJobLauncher
toTaskExecutorJobLauncher
#4123 - Reduce use of deprecated APIs #4120
- Migrate tests to JUnit Jupiter #4166
- Remove the dependency to JUnit in
AssertFile
#4112 - Can't wrap
JobRepository
in a tracing representation #3899 - Improve
JobBuilder
andStepBuilder
APIs with regards to setting mandatory properties #4192 - Deprecate Job/Step builder factories #4188
- Revisit the default behaviour of job parameters conversion #3960
- Change
DefaultExecutionContextSerializer
to produce Base64 #4122 - Revisit the default configuration of
ExecutionContextSerializer
withEnableBatchProcessing
#4140 - Update MySQL Connector/J and use new Maven coordinates #4211
- Improve
@SpringBatchTest
to autowire the job under test inJobLauncherTestUtils
if it is unique #4218 - Improve Micrometer's meter registry customization #4224
- Improve Micrometer's observation registry customization #4222
- IllegalArgumentException thrown from afterPropertiesSet where IllegalStateException would be more appropriate #2244
- Open ChunkMessageChannelItemWriter for extension #952
- Change JobBuilerHelper#enhance parameter type to AbstractJob #4231
- Change StepBuilerHelper#enhance parameter type to AbstractStep #4220
- Sorting in JdbcJobExecutionDao.GET_RUNNING_EXECUTIONS makes no sense #3987
🐞 Bug fixes
- StepExecution counts integer overflow #3650
- Deadlock accessing creating a job on sqlserver when multiple jobs start at once #1448
- Oracle Error on creating new Batch Job #1127
- Oracle clustered environment with cached sequences can lead to Spring Batch thinking new job already exists #2000
- Batch sequences generate unordered ids, which results in unordered instances returned by JobExplorer #1422
- DefaultBatchConfigurer warns about the lack of TransactionManager provided, yet offers no way to supply it #763
- No pom.xml for published artifacts for 5.0.0-SNAPSHOT #4028
- Map.of() cannot be deserialized #4036
FixedLengthTokenizer
wrong tokenization with UTF-8 extended characters #3714- Inconsistent default encoding in
FlatFileItemReader
andFlatFileItemWriter
#1154 StaxEventItemWriter.unclosedHeaderCallbackElements
prevents new job execution #4044- Circular reference error when autowiring
JobBuilderFactory
#3991 - NPE when creating
MongoItemReader
using a builder without specifying sorting #4082 - Unable to build the project without an internet connection #4152
- Add missing initialized flag set to
FlowJob
#4142 - Unable to register an annotation-based
StepExecutionListener
in a fault-tolerant step #4137 - Fix tests catching nested exceptions #4136
- Unable to read XML data without spring-tx in the classpath #4132
- Maven surefire uses wrong provider for Spring Batch Core #4121
- Lost transactionAttribute when using chaining StepBuilder #3686
- ItemReadListener not being correctly registered after adding a StepExecutionListener #773
- Cannot subclass final class
com.sun.proxy.$Proxy202
#793 StepBuilderFactory
Only Supports Listener Annotations, Not Listener Interfaces #1098JobRepositoryTestUtils
should work against theJobRepository
interface #4070- The test datasource should not be autowired in
JobRepositoryTestUtils
#4178 - The job under test should not be autowired in
JobLauncherTestUtils
#1237 RepositoryItemReader#setRepository
is broken in 5.0.0-M4 #4164- Fix non-nullable columns in MySQL migration for Spring Batch 4.3 #4145
- Incorrect transaction manager configuration in
BatchConfigurer
#4191 - Inconsistent transaction manager configuration between XML and Java config styles #4130
- Fix link to spring-batch.xsd in spring.schemas 05f6d13
- Duplicated job execution for single job instance. #3788
- JobRepositoryTestUtils#removeJobExecutions() Fails with Foreign Key Constraint Violation if Job Executions have Step Executions #4242
- Calling JobExplorer outside of a transaction logs warnings about the isolation Level not being applied #4230
- Incorrect deprecation of ItemStreamSupport #4238
- Execution context deserialization failure in AOT mode on second job run #4239
- JobOperator#stop can not stop JobExecution correctly in some cases #4064
- BatchStatus#isRunning() is not consistent with JobExplorer#findRunningJobExecutions(String) or JobExecution#isRunning() #1483
- JobRepository#getJobNames() always returns empty list #4229
- SpringBatchTest does not work ootb with SpringBoot ...
v5.0.0-RC2
⭐ New Features
- Add native reflection hints for
StepContext
andJobContext
#4228 - Add Micrometer counter for job launches in
JobLauncher
#4226 - Add full support for MariaDB as a separate product #3891
🚀 Enhancements
- Improve
@SpringBatchTest
to autowire the job under test inJobLauncherTestUtils
if it is unique #4218 - Improve Micrometer's meter registry customization #4224
- Improve Micrometer's observation registry customization #4222
Deprecations and API changes
- Change return type of counting methods in various DAOs from int to long #4227
🔨 Dependency Upgrades
- Upgrade to Spring Framework 6.0.0-RC4
- Upgrade to Spring Data 2022.0.0-RC2
- Upgrade to Spring Integration 6.0.0-RC2
- Upgrade to Spring AMQP 3.0.0-RC1
- Upgrade to Spring for Apache Kafka 3.0.0-RC2
- Upgrade to Spring Retry 2.0.0-RC2
- Upgrade to Micrometer 1.10.0
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
Full Change log: 5.0.0-RC1...5.0.0-RC2
v5.0.0-RC1
⭐ New Features
- Add Spring Batch version in the execution context #4215
🚀 Enhancements
- Update MySQL Connector/J and use new Maven coordinates #4211
🐞 Bug fixes
- Fix link to spring-batch.xsd in spring.schemas 05f6d13
Deprecations and API changes
- Remove support for Gemfire #4214
- Change setter name for isolationLevelForCreate in AbstractJobRepositoryFactoryBean #4213
🔨 Dependency Upgrades
- Upgrade to Spring Framework 6.0.0-RC1
- Upgrade to Spring Data 2022.0.0-RC1
- Upgrade to Spring Integration 6.0.0-RC1
- Upgrade to Spring AMQP 3.0.0-RC1
- Upgrade to Spring for Apache Kafka 3.0.0-RC1
- Upgrade to Spring Retry 2.0.0-RC2
- Upgrade to Micrometer 1.10.0-RC1
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
Full Change log: 5.0.0-M8...5.0.0-RC1
v5.0.0-M8
⭐ New Features
- Improve testability of
SystemCommandTasklet
#3955 - String array command with
SystemCommandTasklet
#752
🚀 Enhancements
- Change
DefaultExecutionContextSerializer
to produce Base64 #4122 - Revisit the default configuration of
ExecutionContextSerializer
withEnableBatchProcessing
#4140
🔨 Dependency Upgrades
- Upgrade to Spring Framework 6.0.0-RC1
- Upgrade to Spring Data 2022.0.0-M6
- Upgrade to Spring Integration 6.0.0-M5
- Upgrade to Spring AMQP 3.0.0-M4
- Upgrade to Spring for Apache Kafka 3.0.0-M6
- Upgrade to Spring Retry 2.0.0-M1
- Upgrade to Micrometer 1.10.0-RC1
Deprecations and API changes
- Deprecate throttle limit in favour of using similar features in
TaskExecutor
implementations #2218
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
Full Change log: 5.0.0-M7...5.0.0-M8
v5.0.0-M7
⭐ New Features
🚀 Enhancements
- Revisit the default behaviour of job parameters conversion #3960
🔨 Dependency Upgrades
- Upgrade to Spring Framework 6.0.0-M6
- Upgrade to Spring Data 2022.0.0-M6
- Upgrade to Spring Integration 6.0.0-M5
- Upgrade to Spring AMQP 3.0.0-M4
- Upgrade to Spring for Apache Kafka 3.0.0-M6
- Upgrade to Spring Retry 2.0.0-M1
- Upgrade to Micrometer 1.10.0-M6
📔 Documentation
- Fix minor example in job.adoc #4199
- Incorrect reference to SimpleJdbcTemplate in reference documentation #4197
- Improve documentation of scoped beans definition #1502
Deprecations and API changes
- Remove
ParameterType
enumeration #3960 - Deprecate
JobParameters#toProperties
#3960 - Deprecate JobParametersBuilder#addParameter #3960
- The method
JobParameter#getType
now returnsT
instead ofObject
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
Full Change log: 5.0.0-M6...5.0.0-M7
v4.3.7
🐞 Bug fixes
- Unable to register an annotation-based StepExecutionListener in a fault-tolerant step #4137
- Unable to read XML data without spring-tx in the classpath #4132
- Add missing initialized flag set to FlowJob #4142
- Fix non-nullable columns in MySQL migration for Spring Batch 4.3 #4145
🚀 Enhancements
- Declare dependency on jettison as optional #4196
📔 Documentation
- Improve documentation of scoped beans definition #1502
- Incorrect reference to SimpleJdbcTemplate in reference documentation #4197
🔨 Dependency Upgrades
- Spring Framework: 5.3.23
- Spring Retry: 1.3.3
- Spring AMQP: 2.3.16
- Spring Data: 2.5.12
- Spring Integration: 5.5.15
- Spring Kafka: 2.7.14
- Spring LDAP: 2.3.8.RELEASE
- Micrometer: 1.8.10
❤️ Contributors
We would like to thank all contributors who helped in shipping this release!
v5.0.0-M6
⭐ New Features
- Add support to customize transaction attributes #4195
- Add support to configure the transaction manager in
SimpleJobOperator
#1078 - Add support to configure the transaction manager in
SimpleJobExplorer
#1307 - Revisit the configuration of infrastructure beans with
@EnableBatchProcessing
#3942 - Add native-image support for
AbstractJobRepositoryFactoryBean
#4144 - Add native hints for Spring Batch #4187
🚀 Enhancements
- Can't wrap
JobRepository
in a tracing representation #3899 - Improve
JobBuilder
andStepBuilder
APIs with regards to setting mandatory properties #4192 - Deprecate Job/Step builder factories #4188
🐞 Bug Fixes
- Incorrect transaction manager configuration in
BatchConfigurer
#4191 - Inconsistent transaction manager configuration between XML and Java config styles #4130
🔨 Dependency Upgrades
- Upgrade to Spring Framework 6.0.0-M6
- Upgrade to Spring Data 2022.0.0-M6
- Upgrade to Spring Integration 6.0.0-M5
- Upgrade to Spring AMQP 3.0.0-M4
- Upgrade to Spring for Apache Kafka 3.0.0-M6
- Upgrade to Spring Retry 2.0.0-M1
- Upgrade to Micrometer 1.10.0-M5
Deprecations and API changes
- Deprecate
JobBuilderFactory
andStepBuilderFactory
support #4188 - Removal of
BatchConfigurer
andDefaultBatchConfigurer
#3942 - Removal of
SimpleBatchConfiguration
andModularBatchConfiguration
#3942
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
Full Change log: 5.0.0-M5...5.0.0-M6
v5.0.0-M5
🚀 Enhancements
🐞 Bug Fixes
JobRepositoryTestUtils
should work against theJobRepository
interface #4070- The test datasource should not be autowired in
JobRepositoryTestUtils
#4178 - The job under test should not be autowired in
JobLauncherTestUtils
#1237 RepositoryItemReader#setRepository
is broken in 5.0.0-M4 #4164- Fix non-nullable columns in MySQL migration for Spring Batch 4.3 #4145
🔨 Dependency Upgrades
- Upgrade to Spring Framework 6.0.0-M5
- Upgrade to Spring Data 2022.0.0-M5
- Upgrade to Spring Integration 6.0.0-M4
- Upgrade to Spring AMQP 3.0.0-M3
- Upgrade to Spring for Apache Kafka 3.0.0-M5
- Upgrade to Micrometer 1.10.0-M4
- Upgrade to Hibernate 6.1.2.Final
📔 Documentation
- Update reference documentation to use the Spring Asciidoctor Backend #3865
Deprecations and API changes
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
Full Changelog: 5.0.0-M4...5.0.0-M5
v5.0.0-M4
⭐ New Features
- Add
FunctionalInterface
annotation where appropriate #4107 - Add
FieldExtractor
implementation for Java records #4159 - Configure the right
FieldExtractor
based on the type of items inFlatFileItemWriterBuilder
#4161 - Configure the right
FieldSetMapper
based on the type of items inFlatFileItemReaderBuilder
#4160 - Change transaction manager type to
JdbcTransactionManager
in default batch configuration #4126
🚀 Enhancements
- Replace deprecated
IntegrationFlows
#4155 - Rename
SimpleJobLauncher
toTaskExecutorJobLauncher
#4123 - Reduce use of deprecated APIs #4120
🐞 Bug Fixes
- Unable to build the project without an internet connection #4152
- Add missing initialized flag set to
FlowJob
#4142 - Unable to register an annotation-based
StepExecutionListener
in a fault-tolerant step #4137 - Fix tests catching nested exceptions #4136
- Unable to read XML data without spring-tx in the classpath #4132
- Maven surefire uses wrong provider for Spring Batch Core #4121
- Lost transactionAttribute when using chaining StepBuilder #3686
- ItemReadListener not being correctly registered after adding a StepExecutionListener #773
- Cannot subclass final class
com.sun.proxy.$Proxy202
#793 StepBuilderFactory
Only Supports Listener Annotations, Not Listener Interfaces #1098
🔨 Dependency Upgrades
- Upgrade to Spring Framework 6.0.0-M5
- Upgrade to Spring Data 2022.0.0-M5
- Upgrade to Spring Integration 6.0.0-M4
- Upgrade to Spring AMQP 3.0.0-M3
- Upgrade to Spring for Apache Kafka 3.0.0-M5
- Upgrade to Micrometer 1.10.0-M3
- Upgrade to Hibernate 6.1.1.Final
📔 Documentation
- Add package-info.java to integration #4141
- Editing pass #4163
- Javadoc editing #4158
- Improve Javadocs #4129
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
Full Changelog: 5.0.0-M3...5.0.0-M4
v5.0.0-M3
⭐ Features
- Create Maven BOM for Spring Batch modules #1097
- Allow Lambdas to be passed as item processors in Java DSL #4061
- Best to distinguish
CreateTime
andStartTime
inStepExecution
#4049 - Make charset configurable in
JdbcExecutionContextDao
#795
🚀 Enhancements
- Add
@Nullable
where appropriate inJobExecution
andStepExecution
#4077 - Change default encoding to UTF-8 in
JdbcExecutionContextDao
#3983 - Add
java.util.UUID
to the trusted classes list inJackson2ExecutionContextStringSerializer
#4110 AbstractFileItemWriter
should support java.nio #756- Make JUnit4 dependency optional in
spring-batch-test
#4033
🐞 Bug fixes
FixedLengthTokenizer
wrong tokenization with UTF-8 extended characters #3714- Inconsistent default encoding in
FlatFileItemReader
andFlatFileItemWriter
#1154 StaxEventItemWriter.unclosedHeaderCallbackElements
prevents new job execution #4044- Circular reference error when autowiring
JobBuilderFactory
#3991 - NPE when creating
MongoItemReader
using a builder without specifying sorting #4082
🔨 Dependency Upgrades
- Upgrade to Spring Framework 6.0.0-M4
- Upgrade to Spring Data 2022.0.0-M4
- Upgrade to Spring Integration 6.0.0-M3
- Upgrade to Spring AMQP 3.0.0-M3
- Upgrade to Spring for Apache Kafka 3.0.0-M4
- Upgrade to Micrometer 1.10.0-M2
📔 Documentation
- Incorrect documentation in "4.6.6 Abort a job" section #4037
- Editing pass for Javdocs #4096 #4090
- Editing pass for reference docs #4083
- Fix Javadoc of
SpringBatchTest
annotation #4102
❤️ Contributors
We'd like to thank all contributors who helped in making this release possible!
Full Changelog: 5.0.0-M2...5.0.0-M3