⭐ New features
- Add support for MongoDB as JobRepository #877
- Introduce a resourceless job repository implementation #4679
- Add adapters for Java functional interfaces #4672
- Add ability to customize the job parameters converter in the default batch configuration #4650
- Add
CompositeItemReader
analogous toCompositeItemWriter
andCompositeItemProcessor
#757 - Allow dependent steps to start concurrently #2044
- Add blocking queue item reader/writer to enable implementing the staged event-driven architecture in batch jobs #2350
- Add support for data classes in
JdbcCursorItemReaderBuilder
&JdbcPagingItemReaderBuilder
#4578 - Add support for query hints in JPA item readers #4479
- Add possibility to configure line separator in
RecursiveCollectionLineAggregator
#4594 - Add
JobRegistrySmartInitializingSingleton
#4521 - Add DatabaseType
POSTGRES
for the product nameEnterpriseDB
#4627 - Revisit the mechanism of job registration #4547
🐞 Bug fixes
- Incorrect bean configuration in
DefaultBatchConfiguration
#4543 BeanPostProcessorChecker.postProcessAfterInitialization
WARNING after upgrade spring-framework-6.1.0 #4489- Possible duplicate state transitions in flow definition #3674
- Order of Transition Elements Still Does Not completely adhere to documentation #3996
- Memory leak in
MessageChannelPartitionHandler
when polling the database #4598 ListItemWriter<T>::getWrittenItems
has bad wildcard return type #4576SimpleBinaryBufferedReaderFactory
misses line endings #811StepExecution.getEndTime()
returns null inStepExecutionListener.afterStep()
#3846- Default value for
ignoreWarnings
inJdbcCursorItemReaderBuilder
does not align with documentation #4570 - Remote partitioning doesn't work if you're using graalvm #4564
SystemCommandTasklet
does not propagate errors #4483- Incorrect Chunk property value in implementation of
ItemWriter
write method #4560 - Incorrect step configuration when setting the taskExecutor before
faultTolerant()
#4438 - Incorrect deprecation in
MongoPagingItemReader
#4552 JobRepository.deleteJobInstance()
Fails with Foreign Key Constraint Violation if Job Executions have Step Executions #4382DefaultJobParametersConverter
throwsjava.lang.ArrayIndexOutOfBoundsException
if input is empty string #4505- Wrong column types in
JdbcStepExecutionDao
#4648 MongoStepExecutionDao
returns an different stepExecution if a job has multiple steps spring-projects-experimental/spring-batch-experimental/issues/3
🚀 Enhancements
- Bad performance of
GET_LAST_STEP_EXECUTION
query on DB2 with largeSTEP_EXECUTION
table #4657 - Use
Threadlocal.remove()
instead ofThreadlocal.set(null)
#4601 - Performance issue in
DefaultFieldSet
due to the usage ofSimpleDateFormat
#1694 - Improve Error Messages in
JobParametersBuilder
methods #4581 - Implement
jumpToItem
inJsonItemReader
#4557 - Maintain similar ordering of elements between
DefaultStateTransitionComparator
andFlowJobBuilder
#4527 - Avoid collection copying #4553
- Make util classes to follow code style guide #4545
- Use annotation
@Override
consistently #4512 - Check dirty flag of step execution context before update in inner loop #4503
- Missing
@FunctionalInterface
in JobKeyGenerator #4613 - Proper default value for skipLimit #4661
📔 Documentation
- Flow order priority does not match documented behavior #4456
- Incorrect link to batch reference documentation on project page #4637
- Typo in architecture doc #4607
- Grammatical error in restart.adoc #4600
- Incorrect link in appendix #4595
- Missing information about error handling in
ChunkListener
s #4384 - Improve Javadoc regarding the sort order in
RepositoryItemReader
#4462 - Fix code sample that uses deprecated
StepBuilderFactory
#4582 - Misleading documentation on
ItemWriteListener
#4400 - Incorrect code example in documentation #4550
- Reference Documentation Uses Deprecated Class
StepExecutionListenerSupport
#4538 - Incorrect Type of getter in Documentation for
JobParameters#getDouble
#4526 - UI Aligment Issue - Spring Batch Version Number in Docs #4534
- Missing documentation about MultiResourceItemWriter not creating empty files when no data goes through delegates #4645
- Typo in the documentation chapter Spring Batch Integration #4649
🆙 Dependency Upgrades
- Spring Framework: 6.2.0
- Spring Retry: 2.0.10
- Micrometer: 1.14.1
- Spring Integration: 6.4.0
- Spring AMQP: 3.2.0
- Spring Kafka: 3.3.0
- Spring Data: 3.4.0
- Spring Ldap: 3.2.8
🔨 Tasks
- Deprecate the usage of
LobHandler
#4588 - Deprecate
SystemPropertyInitializer
#4680 - Remove deprecated APIs scheduled for removal in v5.2.0 #4398
- Regression in javadocs deployment script #4511
❤️ Contributors
Many thanks to all contributors who worked on this release!
Full change log: v5.1.2...v5.2.0