Skip to content

v5.0.0

Compare
Choose a tag to compare
@fmbenhassine fmbenhassine released this 24 Nov 04:38
· 433 commits to main since this release

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 and StartTime in StepExecution #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 in FlatFileItemWriterBuilder #4161
  • Configure the right FieldSetMapper based on the type of items in FlatFileItemReaderBuilder #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 and JobContext #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 in JobExecution and StepExecution #4077
  • Change default encoding to UTF-8 in JdbcExecutionContextDao #3983
  • Add java.util.UUID to the trusted classes list in Jackson2ExecutionContextStringSerializer #4110
  • AbstractFileItemWriter should support java.nio #756
  • Make JUnit4 dependency optional in spring-batch-test #4033
  • Replace deprecated IntegrationFlows #4155
  • Rename SimpleJobLauncher to TaskExecutorJobLauncher #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 and StepBuilder 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 with EnableBatchProcessing #4140
  • Update MySQL Connector/J and use new Maven coordinates #4211
  • Improve @SpringBatchTest to autowire the job under test in JobLauncherTestUtils 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 and FlatFileItemWriter #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 #1098
  • JobRepositoryTestUtils should work against the JobRepository 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 #4233

🔨 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
  • Deprecate Hibernate support #4150
  • Deprecate AssertFile #4181
  • Deprecate JobBuilderFactory and StepBuilderFactory support #4188
  • Removal of BatchConfigurer and DefaultBatchConfigurer #3942
  • Removal of SimpleBatchConfiguration and ModularBatchConfiguration #3942
  • Remove ParameterType enumeration #3960
  • Deprecate JobParameters#toProperties #3960
  • Deprecate JobParametersBuilder#addParameter #3960
  • The method JobParameter#getType now returns T instead of Object
  • Deprecate throttle limit in favour of using similar features in TaskExecutor implementations #2218
  • Remove support for Gemfire #4214
  • Change setter name for isolationLevelForCreate in AbstractJobRepositoryFactoryBean #4213
  • Change return type of counting methods in various DAOs from int to long #4227

🔨 Dependency Upgrades

  • Upgrade to Spring Framework 6.0.1
  • Upgrade to Spring Data 2022.0.0
  • Upgrade to Spring Integration 6.0.0
  • Upgrade to Spring AMQP 3.0.0
  • Upgrade to Spring for Apache Kafka 3.0.0
  • Upgrade to Micrometer 1.10.1

📔 Documentation

  • Editing of the job edit changes #3918
  • Add EPUB output in documentation #3920
  • Restore the dynamic ToC #4019
  • Added missing docs for batch.core and batch.core.configuration packages #4068
  • Wrong size for BATCH_JOB_INSTANCE.JOB_KEY in Appendix A #4071
  • Fix typos in documentation #4010
  • Fix Javadoc of FaultTolerantChunkProvider #4029
  • 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
  • Add package-info.java to integration #4141
  • Editing pass #4163
  • Javadoc editing #4158
  • Improve Javadocs #4129
  • Update reference documentation to use the Spring Asciidoctor Backend #3865
  • Fix minor example in job.adoc #4199
  • Incorrect reference to SimpleJdbcTemplate in reference documentation #4197
  • Improve documentation of scoped beans definition #1502
  • Headline in Spring Batch 5.0 Migration Guide contains typo #4240

❤️ Contributors

We'd like to thank all contributors who helped in making this release possible!