Skip to content

Releases: spring-projects/spring-batch

v5.2.0

21 Nov 08:42
ade546b
Compare
Choose a tag to compare

⭐ 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 to CompositeItemWriter and CompositeItemProcessor #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 name EnterpriseDB #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 #4576
  • SimpleBinaryBufferedReaderFactory misses line endings #811
  • StepExecution.getEndTime() returns null in StepExecutionListener.afterStep() #3846
  • Default value for ignoreWarnings in JdbcCursorItemReaderBuilder 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 #4382
  • DefaultJobParametersConverter throws java.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 large STEP_EXECUTION table #4657
  • Use Threadlocal.remove() instead of Threadlocal.set(null) #4601
  • Performance issue in DefaultFieldSet due to the usage of SimpleDateFormat #1694
  • Improve Error Messages in JobParametersBuilder methods #4581
  • Implement jumpToItem in JsonItemReader #4557
  • Maintain similar ordering of elements between DefaultStateTransitionComparator and FlowJobBuilder #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 ChunkListeners #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

v5.2.0-RC1

24 Oct 00:42
0911e89
Compare
Choose a tag to compare
v5.2.0-RC1 Pre-release
Pre-release

⭐ New features

  • Allow Subclasses in the CompositeItemReader #4682

🐞 Bug fixes

🚀 Enhancements

  • Missing @FunctionalInterface in JobKeyGenerator #4613

📔 Documentation

  • 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-RC2
  • Spring Retry: 2.0.10
  • Micrometer: 1.14.0-RC1
  • Spring Integration: 6.4.0-RC1
  • Spring AMQP: 3.2.0-RC1
  • Spring Kafka: 3.3.0-RC1
  • Spring Data: 3.4.0-RC1
  • Spring Ldap: 3.2.7

❤️ Contributors

Many thanks to all contributors who worked on this release!


Full change log: v5.2.0-M2...v5.2.0-RC1

v5.2.0-M2

11 Oct 22:56
8319c54
Compare
Choose a tag to compare
v5.2.0-M2 Pre-release
Pre-release

⭐ 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 DatabaseType POSTGRES for the product name EnterpriseDB #4627

  • Simple CompositeItemReader analogous to CompositeItemWriter and CompositeItemProcessor #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

🚀 Enhancements

  • Bad performance of GET_LAST_STEP_EXECUTION query on DB2 with large STEP_EXECUTION table #4657

🔨 Tasks

  • Deprecate the usage of LobHandler #4588
  • Deprecate SystemPropertyInitializer #4680

❤️ Contributors

Thank you to all the contributors who worked on this release!


Full change log: v5.2.0-M1...v5.2.0-M2

v5.2.0-M1

18 Sep 08:34
eae2ef6
Compare
Choose a tag to compare
v5.2.0-M1 Pre-release
Pre-release

⭐ New features

  • 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
  • Revisit the mechanism of job registration #4547
  • Add JobRegistrySmartInitializingSingleton #4521

🐞 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 #4576
  • SimpleBinaryBufferedReaderFactory misses line endings #811
  • StepExecution.getEndTime() returns null in StepExecutionListener.afterStep() #3846
  • Default value for ignoreWarnings in JdbcCursorItemReaderBuilder 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 #4382
  • DefaultJobParametersConverter throws java.lang.ArrayIndexOutOfBoundsException if input is empty string #4505

🚀 Enhancements

  • Use Threadlocal.remove() instead of Threadlocal.set(null) #4601
  • Performance issue in DefaultFieldSet due to the usage of SimpleDateFormat #1694
  • Improve Error Messages in JobParametersBuilder methods #4581
  • Implement jumpToItem in JsonItemReader #4557
  • Maintain similar ordering of elements between DefaultStateTransitionComparator and FlowJobBuilder #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

📔 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 ChunkListeners #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

🆙 Dependency Upgrades

  • Spring Framework: 6.2.0-RC1
  • Spring Retry: 2.0.9
  • Micrometer: 1.14.0-M3
  • Spring Integration: 6.4.0-M3
  • Spring AMQP: 3.2.0-M3
  • Spring Kafka: 3.3.0-M3
  • Spring Data: 3.4.0-M1
  • Spring Ldap: 3.2.6

🔨 Tasks

  • 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-M1

v5.1.2

22 May 11:45
a8f8d0b
Compare
Choose a tag to compare

🐞 Bug fixes

  • Incorrect Chunk property value in implementation of ItemWriter write method #4560
  • SystemCommandTasklet does not propagate errors #4483
  • Remote partitioning doesn't work if you're using graalvm #4564
  • SimpleBinaryBufferedReaderFactory misses line endings #811
  • Memory leak in MessageChannelPartitionHandler when polling the database #4598

🚀 Enhancements

  • Improve Error Messages in JobParametersBuilder methods #4581

📔 Documentation

  • Reference Documentation Uses Deprecated Class StepExecutionListenerSupport #4538
  • Incorrect code example in documentation #4550
  • Misleading documentation on ItemWriteListener #4400
  • Code sample uses deprecated StepBuilderFactory #4582
  • Typo in java-config.adoc #4591
  • Incorrect link in appendix #4595

🆙 Dependency Upgrades

  • Spring Framework: 6.1.7
  • Spring Retry: 2.0.6
  • Micrometer: 1.12.6
  • Spring Integration: 6.2.5
  • Spring AMQP: 3.1.5
  • Spring Kafka: 3.1.5
  • Spring Data: 3.2.6
  • Spring Ldap: 3.2.3

❤️ Contributors

Thank you to all the contributors who worked on this release!


Full change log: v5.1.1...v5.1.2

v5.0.6

22 May 08:24
a79e42f
Compare
Choose a tag to compare

🐞 Bug fixes

  • Incorrect Chunk property value in implementation of ItemWriter write method #4560
  • SystemCommandTasklet does not propagate errors #4483
  • Remote partitioning doesn't work if you're using graalvm #4564
  • SimpleBinaryBufferedReaderFactory misses line endings #811
  • Memory leak in MessageChannelPartitionHandler when polling the database #4598

🚀 Enhancements

  • Improve Error Messages in JobParametersBuilder methods #4581

📔 Documentation

  • Reference Documentation Uses Deprecated Class StepExecutionListenerSupport #4538
  • Incorrect code example in documentation #4550
  • Misleading documentation on ItemWriteListener #4400
  • Code sample uses deprecated StepBuilderFactory #4582
  • Typo in java-config.adoc #4591

🆙 Dependency Upgrades

  • Spring Framework: 6.0.20
  • Spring Retry: 2.0.6
  • Spring AMQP: 3.0.14
  • Spring Kafka: 3.0.17

❤️ Contributors

Thank you to all the contributors who worked on this release!


Full change log: v5.0.5...v5.0.6

v5.1.1

21 Feb 16:07
1b6b792
Compare
Choose a tag to compare

⭐ New features

  • Add JobRegistrySmartInitializingSingleton #4521

🐞 Bug fixes

  • Incorrect error message in JobOperatorFactoryBean #4528
  • DefaultJobParametersConverter throws java.lang.ArrayIndexOutOfBoundsException if input is empty string #4505
  • JobRepository.deleteJobInstance() Fails with Foreign Key Constraint Violation if Job Executions have Step Executions #4382
  • Incorrect step configuration when setting the taskExecutor before faultTolerant() #4438
  • Incorrect deprecation in MongoPagingItemReader #4552

🚀 Enhancements

  • Check dirty flag of step execution context before update in inner loop #4503

📔 Documentation

  • Incorrect Type of getter in Documentation for JobParameters#getDouble #4526
  • Broken link to Spring Batch docs #4498
  • UI Aligment Issue - Spring Batch Version Number in Docs #4534

🆙 Dependency Upgrades

  • Spring Framework: 6.1.4
  • Spring Retry: 2.0.5
  • Spring Integration: 6.2.2
  • Spring Data: 3.2.3
  • Spring AMQP: 3.1.2
  • Spring Kafka: 3.1.2
  • Micrometer: 1.12.3

❤️ Contributors

Thank you to all the contributors who worked on this release!


Full change log: v5.1.0...v5.1.1

v5.0.5

21 Feb 14:23
03daeeb
Compare
Choose a tag to compare

🐞 Bug fixes

  • Incorrect error message in JobOperatorFactoryBean #4528
  • DefaultJobParametersConverter throws java.lang.ArrayIndexOutOfBoundsException if input is empty string #4505
  • JobRepository.deleteJobInstance() Fails with Foreign Key Constraint Violation if Job Executions have Step Executions #4382
  • Incorrect step configuration when setting the taskExecutor before faultTolerant() #4438

🚀 Enhancements

  • Check dirty flag of step execution context before update in inner loop #4503

📔 Documentation

  • Incorrect Type of getter in Documentation for JobParameters#getDouble #4526

🆙 Dependency Upgrades

  • Spring Framework: 6.0.17
  • Spring Retry: 2.0.5
  • Spring AMQP: 3.0.11
  • Spring Kafka: 3.0.14

❤️ Contributors

Thank you to all the contributors who worked on this release!


Full change log: v5.0.4...v5.0.5

v5.1.0

22 Nov 16:21
ebedd02
Compare
Choose a tag to compare

⭐ New features

  • Add support for Virtual Threads #4399
  • Add synchronized decorators for non-stream item readers/writers #4368
  • Add option to clear the persistence context in JpaItemWriter #804
  • Add cursor-based ItemReader for MongoDB #4323
  • Add support for bulk inserts in MongoItemWriter #4149
  • Provide accessors in MongoItemWriter to facilitate extensions #3973
  • Add item reader for Redis #4446
  • Add item writer for Redis #3957
  • Add ability to start a job flow definition with a decider #4411
  • Add support to specify the database type through EnableBatchProcessing #4320
  • Auto-configure JobRegistryBeanPostProcessor with EnableBatchProcessing and DefaultBatchConfiguration #4245
  • Add support for Java Date and Time API types serialization in Jackson2ExecutionContextStringSerializer #3952
  • Add option to provide a custom JobKeyGenerator in JdbcJobInstanceDao #3926
  • Access to update counts in JdbcBatchItemWriter #3829
  • Add setter for ObservationConvention in StepBuilder/JobBuilder #4401

🚀 Enhancements

  • Public access to AbstractItemCountingItemStreamItemReader.getCurrentItemCount #1639
  • Add java.util.concurrent.ConcurrentHashMap to the trusted classes list in Jackson2ExecutionContextStringSerializer #4407
  • Add java.sql.Date to the trusted classes list in Jackson2ExecutionContextStringSerializer #4407
  • Auto-detect the class/interface to be mocked #4426
  • Inaccurate exception message in SimpleJobRepository #4025
  • Expose the internal map in ExecutionContext as read-only #4004
  • Add support for quotes in DelimitedLineAggregator #1139
  • Provide better error message in StaxEventItemReader if Resource does not exist #1171
  • Add getters for DAOs in SimpleJobExplorer #1598
  • Use separate parameters for short_context length and exit_message length #1617
  • Expose targetObject and targetMethod in AbstractMethodInvokingDelegator #1786
  • Create versions of samples using Java configuration #3663
  • Improve the issue reporting process #4329
  • Replace deprecated RetryListenerSupport #4453
  • Use more SynchronizedItemReader in tests #4452
  • Take care of some deprecations #4454

🐞 Bug fixes

  • Invalid migration script for H2 #4390
  • Incorrect drop statements in SQLServer DDL script #4373
  • SplitBuilder.add(Flow) causes hung execution in some cases #3857
  • Incorrect thread usage in SynchronizedItemStreamReaderTests #837
  • Concurrent execution of FlowJob may cause FlowExecutionException #4092
  • Switching incrementers causes jobs to have old job parameters #4073
  • Missing setter for strict field in DelimitedBuilder #809
  • DefaultJobParametersExtractor no longer copies keys from JobParameters when not contained in ExecutionContext #4458
  • job scope bean doesn't cleanup in unit test #1288
  • NullPointerException in RepeatTemplate#doHandle() when unwrapIfRethrown() returns null if logging in DEBUG #1123
  • Starting a flow with Flow#next makes the first step execute twice #4432

📔 Documentation

  • Incorrect Javadoc in SimpleStepBuilder #4402
  • Document the type and name of the surrounding job in JobLauncherTestUtils#launchStep #3825
  • Fix typo in SimpleMailMessageItemWriter Javadoc #4381
  • Fix javadoc errors and warnings #1624
  • Migrate documentation to Antora #4422
  • Ambiguous description of "Configuring a JobRepository" #4333
  • Add Two minutes tutorial to the README #4329
  • Update the Getting started guide #4329
  • Broken code samples in reference documentation for Job/Step beans with v5 API #4406
  • Improve developer experience for conditional flows #4460
  • Incorrect Javadoc in DefaultFieldSet and DefaultFieldSetFactory #4494
  • Incorrect JavaDoc for Methods returning JobFlowBuilder in JobBuilder #4415
  • Update documentation about serializable keys in the execution context #4457
  • Improve configuration style toggle in documentation #4357
  • Improve the getting started experience with Spring Batch #4329
  • Reinstate and Update FAQ page #3878
  • Outdated Meta-data ERD #4358
  • Documentation unclear on how to replace deprecated AbstractTaskletStepBuilder#throttleLimit #4389

🔨 Tasks

  • Build failure when the default charset of the JVM is not UTF-8 #4417
  • Rename MongoItemReader to MongoPagingItemReader #4341
  • Deprecate jobRepository method in JobBuilderHelper & StepBuilderHelper #4326
  • Add Automatic-Module-Name to MANIFEST.MF in all components #867
  • Deprecate overrides of StepBuilderHelper#repository for removal #4495

🔨 Dependency upgrades

  • Spring Framework 6.1.0
  • Spring Integration 6.2.0
  • Spring Data 3.2.0
  • Spring LDAP 3.2.0
  • Spring AMQP 3.1.0
  • Spring Kafka 3.1.0
  • Micrometer 1.12.0

❤️ Contributors

Thank you to all the contributors who worked on this release!

@IlyaNerd, @ParadiseCHOI, @benelog, @rwinch, @cppwfs, @sjh836, @hpoettker, @jwillebrands, @hwan33, @bio-engineer, @injae-kim, @morenomjc, @LichKing-lee, @santfirax, @acktsap, @sukanth, @seonwoo960000, @robertmcnees, @cgrings, @juchanei, @lsq27, @scordio, @CNJingo, @woniper, @pranavjandu


Full change log: v5.0.3...v5.1.0

v5.0.4

22 Nov 18:45
3d382c1
Compare
Choose a tag to compare

🐞 Bug fixes

  • Starting a flow with Flow#next makes the first step execute twice #4432
  • DefaultJobParametersExtractor no longer copies keys from JobParameters when not contained in ExecutionContext #4458
  • job scope bean doesn't cleanup in unit test #1288
  • NullPointerException in RepeatTemplate#doHandle() when unwrapIfRethrown() returns null if logging in DEBUG #1123

🚀 Enhancements

  • Inaccurate exception message in SimpleJobRepository #4025
  • Remove unnecessary expressions in AsyncItemWriter #4009

📔 Documentation

  • Documentation unclear on how to replace deprecated AbstractTaskletStepBuilder#throttleLimit #4389
  • Outdated Meta-data ERD #4358
  • Incorrect JavaDoc for Methods returning JobFlowBuilder in JobBuilder #4415
  • Incorrect Javadoc in DefaultFieldSet and DefaultFieldSetFactory #4494
  • Update documentation about serializable keys in the execution context #4457

🆙 Dependency Upgrades

  • Spring Framework: 6.0.14
  • Spring Retry: 2.0.4
  • Spring AMQP: 3.0.10
  • Spring Data: 3.0.12
  • Spring Integration: 6.0.9
  • Spring Kafka: 3.0.13
  • Spring LDAP: 3.0.6
  • Micrometer: 1.10.13

❤️ Contributors

Thank you to all the contributors who worked on this release!


Full change log: v5.0.3...v5.0.4