Repository navigation
Releases
v6.1.0-RC1
⭐ New features
- Provide a
@JobParameterannotation for more convenient access to variables inJobParameters. #5563 - Add
PageableItemReader#5477 - Make
JsonLineMapperagnostic to the JSON library #5345 - Introduce
JsonLineAggregatorforFlatFileItemWriterto write JSON Lines format file #5344 - Supports to create step execution with context #5184
🚀 Enhancements
- Introduce
RemoteChunkingManagerBuilderand deprecateRemoteChunkingManagerStepBuilderand its factory #5598 JdbcJobExecutionDao.findJobExecutionsissues 1 + 3N queries for N executions #5570- Polish
DatabaseType#5542 - Improve
JdbcJobExecutionDao#synchronizeStatus(StepExecution)#5365 - Refactor JDBC DAOs to use named parameters instead of positional parameters and
JdbcClientinstead ofJdbcTemplate#4804 - Eliminate unnecessary query for current version #4797
- Poll workers of a partitioned step with a database query #4705
- Running a job causes retrieval of full history of job executions #4169
- Not unique steps names in a
FlowJobshould log a warning #3757
🐞 Bug fixes
- Restart after a chunk scan that ended with a skipped item processes that item again #5599
ChunkOrientedStepdoes not restore the step execution when a chunk transaction is not committed #5594MongoCursorItemReaderthrowsNullPointerExceptionwhen closed before opening #5589- MariaDB 6.0 migration fails when renaming
BATCH_JOB_SEQ#5586 - listener exceptions are skippable in scan mode but fatal elsewhere #5585
- Fix missing page increase in
AbstractPaginatedDataItemReader#5583 - Job-scoped beans are not usable from worker threads of multi-threaded steps and parallel flows #5576
BatchObservabilityBeanPostProcessordoesn't respect manually configuredobservationRegistry#5566- Failed job launch leaves an orphan
JobInstancebehind #5562 - Restart after a failure during chunk scanning skips the remaining items of the chunk in
ChunkOrientedStep#5558 NullPointerExceptionwhen closing an unopenedJpaPagingItemReader#5539- Misleading logs in scan mode without retries #5527
FlatFileItemReaderBuilder.addComment()throwsUnsupportedOperationExceptionaftercomments(...)#5520DelimitedLineTokenizerthrowsStringIndexOutOfBoundsExceptionwhen a field is a single quote character #5519FixedLengthTokenizerin strict mode rejects lines when the open-ended range starts at or before the first range's min #5518JobFlowExecutorleaks aStepExecutionacross job executions on a shared thread when no transition matches a step'sExitStatus#5514- Aggregator of remote partitions is not passed all worker steps upon controller restart #5158
📔 Documentation
JpaItemWriterdescription in Appendix of documentation is wrong #5556
🆙 Dependency Upgrades
Spring Framework: 7.1.0-RC1
Spring Integration: 7.2.0-RC1
Spring AMQP: 4.2.0-RC1
Spring Kafka: 4.2.0-RC1
Spring Data: 2026.1.0-RC1
Spring LDAP: 4.2.0-RC1
Micrometer: 1.18.0-RC1
❤️ Contributors
Thank you to all the contributors who worked on this release:
@ahrytsiuk, @Akhil-1527, @AndreaBosmanWork, @beyondwin, @COBI-98, @hunseonglee, @Ichanskiy, @jjh75607, @jjj-n, @PauliusPeciura, @pius712, @quaff, @ryujungkyun, and @scordio
v6.0.6
🚀 Enhancements
- Add
@FunctionalInterfacetoStepInterruptionPolicy#5402 - Fix
SimpleJobOperatorjobRegistrystate message #5369 - Improve
JdbcJobExecutionDao#synchronizeStatus(StepExecution)#5365 - Replace deprecated
Jackson2JsonMessageConverterwithJacksonJsonMessageConverter#5350 - Replace
System.getProperty("line.separator")withSystem.lineSeparator()#5341 - Remove unnecessary null check against
createTimeof execution #5304 - Inaccurate exception message when attempting to start a running job #5280
- Replace
CopyOnWriteArrayListwithArrayListinJdbcPagingItemReaderandJpaPagingItemReaderfor performance and correctness #5112 - Eliminate unnecessary query for current version #4797
- Running a job causes retrieval of full history of job executions #4169
- Not unique steps names in a
FlowJobshould log a warning #3757 - Remove unused
ClassUtilsimport fromJdbcPagingItemReader#5407
🐞 Bug fixes
ChunkOrientedStepdoes not restore the step execution when a chunk transaction is not committed #5594MongoCursorItemReaderthrowsNullPointerExceptionwhen closed before opening #5589- MariaDB 6.0 migration fails when renaming
BATCH_JOB_SEQ#5586 - listener exceptions are skippable in scan mode but fatal elsewhere #5585
- Fix missing page increase in
AbstractPaginatedDataItemReader#5583 - Job-scoped beans are not usable from worker threads of multi-threaded steps and parallel flows #5576
- Restart after a failure during chunk scanning skips the remaining items of the chunk in
ChunkOrientedStep#5558 NullPointerExceptionwhen closing an unopenedJpaPagingItemReader#5539@OnSkipInRead/@OnSkipInProcess/@OnSkipInWritemethods are ignored byChunkOrientedStepBuilder#listener(Object)#5531- Misleading logs in scan mode without retries #5527
FlatFileItemReaderBuilder.addComment()throwsUnsupportedOperationExceptionaftercomments(...)#5520DelimitedLineTokenizerthrowsStringIndexOutOfBoundsExceptionwhen a field is a single quote character #5519FixedLengthTokenizerin strict mode rejects lines when the open-ended range starts at or before the first range's min #5518JobFlowExecutorleaks aStepExecutionacross job executions on a shared thread when no transition matches a step'sExitStatus#5514- Rolled-back chunk counted as written and step COMPLETED in
ChunkOrientedStep(fault-tolerant retry ofOptimisticLockException) #5509 TransientTransactionErrorinMongoSequenceIncrementerduring parallel job executions #5507- Fix
QNamedeserialization inJacksonExecutionContextStringSerializer#5502 ChunkOrientedStepscan mode passes the processed chunk toChunkListener#beforeChunkand silently drops scan items when the listener throws #5493ChunkOrientedStepdoes not re-invoke theItemProcessorduring chunk scanning, unlikeFaultTolerantChunkProcessor#5490JpaCursorItemReader.doClose()missing null check onentityManager#5486- Fix incorrect nullability contract for
encodinginStaxEventItemReader#5483 JsonFunctionalTestsfails on Windows due to CRLF #5481@OnChunkErroris never invoked on a chunk-oriented step #5468- Interface listener callbacks are invoked twice when an item handler also has a listener annotation #5466
spring.batch.job.launch.countis silently missing: theJobOperatorkeepsObservationRegistry.NOOPon most configuration paths #5463- Inconsistent
JobParametertype handling between storage and retrieval in Spring Batch 6.x #5455 @BeforeStep/@AfterStepmethods are ignored byChunkOrientedStepBuilder#listener(Object)#5451- Replace jetbrains
@NotNullwith jspecify@NonNull#5443 SimpleJobOperator.restart(JobExecution)masks the real failure reason with a misleading "job execution already running" message #5439- Missing GraalVM runtime hints for MongoDB persistence model classes and resources #5435
- Fix
JsonFileItemWriterto produce valid JSON when append allowed with custom header/footer callback #5432 - Step name is null when the step is not defined as a bean and not assigned a name #5278
- Forced Sort Passing via
sorts()Method When Building withMongoCursorItemReaderBuilderand Query #4860
📔 Documentation
JpaItemWriterdescription in Appendix of documentation is wrong #5556- Inaccurate documentation of remote chunking and remote partitioning samples regarding JMS headers #5513
- Fix typos in Javadoc comments #5511
- Clarify retryable reads compatibility with forward-only semantics #5510
- Clarify
SkipListenercontract and reference docs about transaction scope #5494 - Reference documentation's tracing example registers a handler that creates no spans and fails the job #5475
- Fix typo in Javadoc of
JobOperator.start()#5434 - Wrong example in "Registering
ItemStreamwith aStep" #5429 - Fix incorrect Javadoc reference in
JobExecution.isStopped()#5414 - Fix javadoc in
SqlPagingQueryUtils#5403 - Fix typo in
EnableBatchProcessingJavadoc #5375 - Inaccurate JavaDoc of
BatchStatus.isLessThanOrEqualTo#5285 - Enhance documentation about leveraging
IteratorItemReaderto reuse scrolling APIs from Spring Data #4484
🔨 Tasks
- Update Apache Artemis
groupIdtoorg.apache.artemis#5482 - Update Groovy version to 5.1.2 #5327
- Consistently use
.versionsuffix for version properties inpom.xml#5506
🆙 Dependency Upgrades
Spring dependencies
Spring Framework: 7.0.9 -> 7.0.10
Spring Integration: 7.0.6 -> 7.0.7
Spring AMQP: 4.0.5 -> 4.0.6
Spring Kafka: 4.0.7 -> 4.0.8
Spring Data: 2025.1.7 -> 2025.1.8
Spring LDAP: 4.0.5 -> 4.0.6
Micrometer: 1.16.7 -> 1.16.8
Other dependencies
Apache Avro: 1.12.1 -> 1.12.2
Hibernate ORM: 7.2.18.Final -> 7.2.25.Final
Jackson 2: 2.20.2 -> 2.21.7
Jackson 3: 3.0.4 -> 3.1.7
❤️ Contributors
Thank you to all the contributors who worked on this release:
@acktsap, @ahrytsiuk, @Akhil-1527, @Andrea...
6.1.0-M2
⭐ New features
- Allow to use Mongo
JobRepositorywith anyPlatformTransactionManager#5508 - Add a builder for
ResourcesItemReaderwith support for specifying resources via a pattern #5487 - Introduce
BatchConstants#5190 - Default reader/writer name to the bean name #5149
- Support specifying resource locations using a pattern in
MultiResourceItemReaderBuilder#5056 - Add support for custom collection prefix in MongoDB Job repository #4980
- Add compile-time safety for mutually exclusive builder methods #4888
- Add schema locations to
DatabaseTypeto prevent typos in the metadata tables string path #4586
🐞 Bug fixes
- Repository/DAO-level count methods cannot soundly validate job/step existence #5544
@OnSkipInRead/@OnSkipInProcess/@OnSkipInWritemethods are ignored byChunkOrientedStepBuilder#listener(Object)#5531- Rolled-back chunk counted as written and step COMPLETED in
ChunkOrientedStep(fault-tolerant retry ofOptimisticLockException) #5509 TransientTransactionErrorinMongoSequenceIncrementerduring parallel job executions #5507- Fix QName deserialization in
JacksonExecutionContextStringSerializer#5502 ChunkOrientedStepscan mode passes the processed chunk toChunkListener#beforeChunkand silently drops scan items when the listener throws #5493ChunkOrientedStepdoes not re-invoke theItemProcessorduring chunk scanning, unlikeFaultTolerantChunkProcessor#5490JpaCursorItemReader.doClose()missing null check on entityManager #5486- Fix incorrect nullability contract for encoding in
StaxEventItemReader#5483 JsonFunctionalTestsfails on Windows due to CRLF #5481@OnChunkErroris never invoked on a chunk-oriented step #5468- Interface listener callbacks are invoked twice when an item handler also has a listener annotation #5466
spring.batch.job.launch.countis silently missing: theJobOperatorkeepsObservationRegistry.NOOPon most configuration paths #5463- Inconsistent JobParameter type handling between storage and retrieval in Spring Batch 6.x #5455
@BeforeStep/@AfterStepmethods are ignored byChunkOrientedStepBuilder#listener(Object)#5451- Replace jetbrains
@NotNullwith jspecify@NonNull#5443 SimpleJobOperator.restart(JobExecution)masks the real failure reason with a misleading "job execution already running" message #5439- Missing GraalVM runtime hints for MongoDB persistence model classes and resources #5435
- Fix
JsonFileItemWriterto produce valid JSON when append allowed with custom header/footer callback #5432 - Step name is null when the step is not defined as a bean and not assigned a name #5278
- Forced Sort Passing via
sorts()Method When Building withMongoCursorItemReaderBuilderand Query #4860 - Incorrect invocation order of job execution listener in remote partitioning #4133
- Remote-chunking implementation does not support parallel executions of the same job #1372
🚀 Enhancements
- Remove redundant methods which are identical to default method #5516
- Inconsistent builder method name:
MultiResourceItemReaderBuilder.setStrict()#5512 - Improve
DefaultJobParametersConverterandJsonJobParametersConverter#5457 - Replace
isAssignableFrom()withisInstance()where feasible #5427 - Remove unused
ClassUtilsimport fromJdbcPagingItemReader#5407 - Add
@FunctionalInterfacetoStepInterruptionPolicy#5402 - Fix
SimpleJobOperatorjobRegistry state message #5369 - Replace deprecated
Jackson2JsonMessageConverterwithJacksonJsonMessageConverter#5350 - Replace
System.getProperty("line.separator")withSystem.lineSeparator()#5341 - Remove unnecessary null check against createTime of execution #5304
- Inaccurate exception message when attempting to start a running job #5280
- Improve
JacksonExecutionContextStringSerializer#5233 - Replace custom converters with
DefaultFormattingConversionService#5186 - Move async processing APIs to
spring-batch-core#5185 - Replace
CopyOnWriteArrayListwithArrayListinJdbcPagingItemReaderandJpaPagingItemReaderfor performance and correctness #5112 - Add flushing support in
RepositoryItemWriter#5073
📔 Documentation
- Fix Javadoc #5545
- Inaccurate documentation of remote chunking and remote partitioning samples regarding JMS headers #5513
- Fix typos in Javadoc comments #5511
- Clarify retryable reads compatibility with forward-only semantics #5510
- Clarify
SkipListenercontract and reference docs about transaction scope #5494 - Reference documentation's tracing example registers a handler that creates no spans and fails the job #5475
- Fix typo in Javadoc of
JobOperator.start()#5434 - Wrong example in
Registering ItemStream with a Step#5429 - Fix incorrect Javadoc reference in
JobExecution.isStopped()#5414 - Fix javadoc in
SqlPagingQueryUtils#5403 - Fix typo in
EnableBatchProcessingJavadoc #5375 - Inaccurate JavaDoc of
BatchStatus.isLessThanOrEqualTo#5285 - Enhance documentation about leveraging
IteratorItemReaderto reuse scrolling APIs from Spring Data #4484
🔨 Tasks
- Consistently use .version suffix for version properties in pom.xml #5506
- Update Apache Artemis groupId to
org.apache.artemis#5482 - Update Groovy version to 5.1.2 #5327
- Deprecate
JobExecutionconvenience getters forJobInstanceid #5533 - Deprecate
setRepositoryinRepositoryItemWriter#5473 - Deprecate
setRepositoryandsetSortsinRepositoryItemReader#5472 - Deprecate Derby support since Apache Derby is retired #5254
- Deprecate
JobInstance::getInstanceIdfor removal to eliminate redundancy [#5244](https://github.com/spring-projects/spring-batch/...
v6.1.0-M1
🐞 Bug Fixes
- Fix incorrect handling of malformed input in FlatFileItemReader #5496
- Fix incorrect deserialization in DefaultExecutionContextSerializer #5497
- Fix incorrect deserialization in JobParameterDeserializer #5498
🆙 Dependency Upgrades
- Spring Framework: 7.1.0-M1
- Spring Integration: 7.2.0-M1
- Spring AMQP: 4.2.0-M1
- Spring Kafka: 4.2.0-M1
- Spring Data: 2026.1.0-M1
- Micrometer: 1.18.0-M1
❤️ Contributors
Thank you to all the contributors who worked on this release!
v6.0.5
Upgrade notes
Spring Integration 7.0.6+ introduced a security fix that restricts DefaultJmsHeaderMapper's inbound property mapping to an explicit allowlist, which defaults to only the content_type property. Remote chunking and remote partitioning over JMS rely on Spring Integration's correlationId, sequenceNumber and sequenceSize message headers to match replies from workers back to the manager's reply aggregator. As user-defined JMS properties, these headers were no longer mapped back into message headers by default, causing jobs to hang or fail with IllegalStateException: Null correlation not allowed.
If you use remote chunking or remote partitioning over JMS, configure your Jms.messageDrivenChannelAdapter beans with a header mapper that maps these headers:
Jms.messageDrivenChannelAdapter(connectionFactory)
.headerMapper(new DefaultJmsHeaderMapper("*"))
.destination("replies")If mapping all headers is too permissive for your security requirements, restrict the allowlist to just what Spring Batch needs:
new DefaultJmsHeaderMapper("correlationId", "sequenceNumber", "sequenceSize").
🐞 Bug Fixes
- Fix incorrect handling of malformed input in FlatFileItemReader #5496
- Fix incorrect deserialization in DefaultExecutionContextSerializer #5497
- Fix incorrect deserialization in JobParameterDeserializer #5498
🆙 Dependency Upgrades
- Spring Framework: 7.0.9
- Spring Integration: 7.0.6
- Spring AMQP: 4.0.5
- Spring Kafka: 4.0.7
- Spring Data: 2025.1.7
- Spring Retry: 2.0.13
- Spring LDAP: 4.0.5
- Micrometer: 1.16.7
❤️ Contributors
Thank you to all the contributors who worked on this release!
v6.0.4
🚀 Enhancements
- Optimize MongoStepExecutionDao#getLastStepExecution to filter and sort at the database level #5385
- Performance in SimpleJobRepository.update(StepExecution) since Spring Batch 6.x #5360
- MongoJobExecutionDao.findRunningJobExecutions issues N+1 MongoDB queries #5356
🐞 Bug fixes
- Generic SkipListener in ChunkOrientedStepBuilder #5412
- ResourcelessJobRepository::getJobInstanceCount violate API contract #5411
- ScopeNotActiveException with
@StepScopeand Local Chunking #5398 - RecordFieldSetMapper rejects null values for nullable types after jSpecify nullability refinement #5392
- EmptyResultDataAccessException on getLastJobExecution when no job execution is found #5389
- FlowStep sets job status to completed even when there are more pending steps #5381
- Incorrect handling of skip policy with JPA infrastructure #5377
- ExitStatus#setExitException breaks immutability contract #5366
- Chunk scan mode does not isolate each scanned item in its own transaction #5361
- Generic ItemReader in ChunkOrientedStepBuilder #5358
- NullPointerException in JacksonJsonObjectReader.close() and GsonJsonObjectReader.close() #5281
- MongoJobInstanceDao: getJobNames() violates interface contract and getJobInstances() performs pagination in memory #5274
- appendAllowed(true) breaks JSON array when the writer is opened/written/closed multiple times #5272
- ExecutionContext dirty flag is never cleared #5249
- SimpleStepExecutionSplitter does not restart COMPLETED partitions even when allowStartIfComplete=true #5238
- JsonItemReaderBuilder should not substitute null resource with ByteArrayResource #5234
- SynchronizedItemStreamReader update call is not threadsafe #5201
- CompositeItemReader Does Not Reset Iterator for Subsequent Job Executions #4926
📔 Documentation
- Missing documentation about transaction management in multi-threaded steps #5386
- Outdated documentation in Scalability reference page #5355
- Stop/restart sample README references a test that no longer exists #5391
- Unable to use JsonLineMapper with Jackson 2 #5330
🔨 Tasks
- Restore LDIF support test coverage #5236
❤️ Contributors
Thank you to all the contributors who worked on this release:
@banseok1216, @acktsap, @seonwooj0810, @won-seoop, @KMGeon, @quaff, @combe4259, @therepanic, @ShinjoWang, @Wordbe, @goutamadwant, @gideruette, @seonwooj0810, @MinChul-Son
Full Changelog: v6.0.3...v6.0.4
v5.2.6
🐞 Bug fixes
- CompositeItemReader Does Not Reset Iterator for Subsequent Job Executions #4926
- ExecutionContext dirty flag is never cleared #5249
- appendAllowed(true) breaks JSON array when the writer is opened/written/closed multiple times #5272
- NullPointerException in JacksonJsonObjectReader.close() and GsonJsonObjectReader.close() #5281
- FlowStep sets job status to completed even when there are more pending steps #5381
🆙 Dependency Upgrades
- Spring Framework: 6.2.19
- Spring Retry: 2.0.13
- Spring Kafka: 3.3.16
- Spring AMQP: 3.2.11
❤️ Contributors
Thank you to all the contributors who contributed to this release!
Full change log: v5.2.5...v5.2.6
v6.0.3
⭐ New features
- Add configuration property to set the job instance incrementer name #5245
- Add support to configure job instance incrementer name through environment variable / system property #5332
🚀 Enhancements
🐞 Bug fixes
- skip listeners registered through ChunkOrientedStepBuilder#listener are ignored #5347
- Incorrect counters with local chunking #5337
- Exceptions are not reported with local chunking #5336
- CommandLineJobOperator.parse() truncates parameter values containing '=' #5295
- Incorrect rollbackCount in scan mode in ChunkOrientedStep #5247
- JobOperator creates its own MapJobRegistry ignoring explicitly defined JobRegistry Spring bean in application #5229
- Transaction is not rolled back before chunk scanning in ChunkOrientedStep with skip policy #5210
- Polymorphic StepExecutionListeners registered through ChunkOrientedStepBuilder#listener are ignored #5094
- V6 migration script for SQL Server fails #5276
- Reinstate inadvertently removed protected method in StaxEventItemWriter #5260
📔 Documentation
- Clarify ItemWriter contract regarding empty chunks #5319
- Fix incorrect javadoc references in JobContext #5342
- Improve and fix the Javadoc link #5290
- Missing documentation about fault tolerance features handling in local chunking #5338
🔨 Tasks
❤️ Contributors
Thank you to all the contributors who worked on this release:
@jzheaux, @trisberg, @marschall , @beatjost, @Jony-Jas, @HongYeseul, @Wordbe, @scordio, @KMGeon, @banseok1216, @quaff , @GaBaljaintheroom and @yunhobb
v5.2.5
⭐ New features
- Add ZonedDateTime and OffsetDateTime support to JobParametersConverter #5178
🐞 Bug fixes
- Cannot deserialize TopicPartition from JobRepository #3797
- Errors are not propagated from job execution #808
- Minor logging issue when a step or job completes instantly #5037
- The implementation of jumpToItem(int itemLastIndex) in AbstractPaginatedDataItemReader does not handle restart behavior correctly. #5136
- Incorrect resource cleanup order in AbstractCursorItemReader#doClose leads to inconsistent behavior #5109
- OptimisticLockingFailureException in JobRepositoryTestUtils.removeJobExecutions() since Spring Batch 5.2.3 #5161
- WriteConflict in MongoSequenceIncrementer during parallel job executions #4960
📔 Documentation
- Elaborate usage of PlatformTransactionManager #4787
🆙 Dependency Upgrades
- Spring Framework: 6.2.17
- Micrometer: 1.14.14
- Spring Integration: 6.4.10
- Spring AMQP: 3.2.9
- Spring Data: 3.4.13
- Spring Ldap: 3.2.16
❤️ Contributors
Thank you to all the contributors who contributed to this release!
Full change log: v5.2.4...v5.2.5
v6.0.2
⭐ New features
- Add ZonedDateTime and OffsetDateTime support to JobParametersConverter #5178
🐞 Bug fixes
- Compatibility issues between v5 and v6 when Migrating from
CommandLineJobRunnertoCommandLineJobOperator#5227 - MongoStepExecutionDao.countStepExecutions() ignores stepName parameter #5220
- OptimisticLockingFailureException due to race condition in graceful shutdown #5217
- ChunkOrientedStep#doExecute updates the StepExecution outside of the chunk transaction boundary. #5199
- Jackson2ExecutionContextStringSerializer fails to serialize job parameters with JobStep #5191
- StepContribution counters are not thread-safe during parallel chunk processing #5188
- ScopeNotActiveException with
@StepScopeItemProcessor in Multi-threaded ChunkOrientedStep #5183 - ChunkOrientedStep updates ExecutionContext even when a chunk fails, leading to data loss on restart #5182
- MetaDataInstanceFactory default values cause StepContext collision in StepScopeTestUtils when
@SpringBatchTestis active #5181 - Wrong database migration to spring-batch 6.x for DB2LUW #5166
- OptimisticLockingFailureException in JobRepositoryTestUtils.removeJobExecutions() since Spring Batch 5.2.3 #5161
- The implementation of jumpToItem(int itemLastIndex) in AbstractPaginatedDataItemReader does not handle restart behavior correctly. #5136
- Incorrect resource cleanup order in AbstractCursorItemReader#doClose leads to inconsistent behavior #5109
- Intermittent OptimisticLockingFailureException when starting job using jobOperator.start() with asyncTaskExecutor #5106
- ClosedChannelException when using StaxEventItemWriter in combination with MultiResourceItemWriter #5098
- WriteConflict in MongoSequenceIncrementer during parallel job executions #4960
🚀 Enhancements
- Use Spring Framework's CollectionUtils to create HashSet/HashMap #5175
- Remove redundant assert in StoredProcedureItemReader #5119
📔 Documentation
- Fix typo in whatsnew.adoc and in integration tests #5207
- Clarify ChunkListener changes in v6 #5226
- Incorrect documentation about concurrent steps in v6 #5228
- correct JobOperatorFactoryBean sample code #5103
🔨 Tasks
- Update project template in issue reporting guide #5212
🆙 Dependency Upgrades
Spring Framework: 7.0.3
Spring Integration: 7.0.2
Spring AMQP: 4.0.2
Spring Kafka: 4.0.2
Spring Data: 4.0.2
Micrometer: 1.16.2
❤️ Contributors
Thank you to all the contributors who worked on this release:
@wocks1123, @thswlsqls, @xeounxzxu, @LeeHyungGeol, @KMGeon, @HongYeseul, @banseok1216, @quaff, and @songhees