This is the first milestone of Spring Batch 5.0. This milestone contains a number of breaking changes. Please refer to the migration guide for more details about upgrade instructions.
🚀 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
⭐ 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
🐞 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
🔨 Tasks
- Favour jakarta over javax components #3656
- Upgrade Spring dependencies to major versions #4027
- Deprecate support for Neo4j #3956
- Update maven wrapper version to 3.8.2 #3978
- Clean up schema versions in XML files #913
- Remove deprecated APIs #3836
- Remove usage of deprecated APIs #3838
- Remove SQLFire support #3839
- Remove JSR-352 implementation #3894
- Updated graceful shutdown sample by removing deprecated code #3916
- Replaces deprecated interfaces #3971
- Remove some deprecated APIs from tests #3962
- CI builds against various database platforms #3092
- OptimisticLockingFailureTests.testAsyncStopOfStartingJob fails intermittently #1121
- Intermittent failure in ConcurrentTransactionTests on windows #3851
- Intermittent failure in AsynchronousTests on windows #3852
- FaultTolerantExceptionClassesTests testNoRollbackTaskletRollbackException fails intermittently #1117
- Rename master branch to main #3879
- Update build process to use Maven #3820
🔨 Dependency Upgrades
- Upgrade to Spring Framework 6.0.0-M2
- Upgrade to Spring Data 2022.0.0-M1
- Upgrade to Spring Integration 6.0.0-M1
- Upgrade to Spring AMQP 3.0.0-M1
- Upgrade to Spring for Apache Kafka 3.0.0-M1
- Upgrade to Micrometer 2.0.0-M1
📔 Documentation
- Editing of the job edit changes #3918
- Add EPUB output in documentation #3920
- Restore the dynamic ToC #4019
❤️ Contributors
We'd like to thank all contributors who helped in making this release possible!