NextStack

spring-batch v6.1.0-M2

pre-release PublishedSep 24, 2026 Sourcespring-projects/spring-batch

spring-batch v6.1.0-M2

:star: New features

  • Allow to use Mongo JobRepository with any PlatformTransactionManager #5508
  • Add a builder for ResourcesItemReader with 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 DatabaseType to prevent typos in the metadata tables string path #4586

:lady_beetle: Bug fixes

  • Repository/DAO-level count methods cannot soundly validate job/step existence #5544
  • @OnSkipInRead/@OnSkipInProcess/@OnSkipInWrite methods are ignored by ChunkOrientedStepBuilder#listener(Object) #5531
  • Rolled-back chunk counted as written and step COMPLETED in ChunkOrientedStep (fault-tolerant retry of OptimisticLockException) #5509
  • TransientTransactionError in MongoSequenceIncrementer during parallel job executions #5507
  • Fix QName deserialization in JacksonExecutionContextStringSerializer #5502
  • ChunkOrientedStep scan mode passes the processed chunk to ChunkListener#beforeChunk and silently drops scan items when the listener throws #5493
  • ChunkOrientedStep does not re-invoke the ItemProcessor during chunk scanning, unlike FaultTolerantChunkProcessor #5490
  • JpaCursorItemReader.doClose() missing null check on entityManager #5486
  • Fix incorrect nullability contract for encoding in StaxEventItemReader #5483
  • JsonFunctionalTests fails on Windows due to CRLF #5481
  • @OnChunkError is 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.count is silently missing: the JobOperator keeps ObservationRegistry.NOOP on most configuration paths #5463
  • Inconsistent JobParameter type handling between storage and retrieval in Spring Batch 6.x #5455
  • @BeforeStep/@AfterStep methods are ignored by ChunkOrientedStepBuilder#listener(Object) #5451
  • Replace jetbrains @NotNull with 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 JsonFileItemWriter to 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 with MongoCursorItemReaderBuilder and 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

:rocket: Enhancements

  • Remove redundant methods which are identical to default method #5516
  • Inconsistent builder method name: MultiResourceItemReaderBuilder.setStrict() #5512
  • Improve DefaultJobParametersConverter and JsonJobParametersConverter #5457
  • Replace isAssignableFrom() with isInstance() where feasible #5427
  • Remove unused ClassUtils import from JdbcPagingItemReader #5407
  • Add @FunctionalInterface to StepInterruptionPolicy #5402
  • Fix SimpleJobOperator jobRegistry state message #5369
  • Replace deprecated Jackson2JsonMessageConverter with JacksonJsonMessageConverter #5350
  • Replace System.getProperty("line.separator") with System.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 CopyOnWriteArrayList with ArrayList in JdbcPagingItemReader and JpaPagingItemReader for performance and correctness #5112
  • Add flushing support in RepositoryItemWriter #5073

:notebook_with_decorative_cover: 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 SkipListener contract 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 EnableBatchProcessing Javadoc #5375
  • Inaccurate JavaDoc of BatchStatus.isLessThanOrEqualTo #5285
  • Enhance documentation about leveraging IteratorItemReader to reuse scrolling APIs from Spring Data #4484

:hammer: 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 JobExecution convenience getters for JobInstance id #5533
  • Deprecate setRepository in RepositoryItemWriter #5473
  • Deprecate setRepository and setSorts in RepositoryItemReader #5472
  • Deprecate Derby support since Apache Derby is retired #5254
  • Deprecate JobInstance::getInstanceId for removal to eliminate redundancy #5244
  • Deprecate StepExecution convenience getters for JobExecution id and parameters #5142
  • Deprecate setEntityManagerFactory in JPA item readers/writer #5101

🆙 Dependency Upgrades

Spring Framework: 7.1.0-M2 Spring Integration: 7.2.0-M2 Spring AMQP: 4.2.0-M2 Spring Kafka: 4.2.0-M2 Spring Data: 2026.1.0-M2 Micrometer: 1.18.0-M2

:heart: Contributors

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

@acktsap, @apptie, @banseok1216, @benelog, @cladren123, @dhritimanchakra, @DragonFSKY, @enduf7686, @GaBaljaintheroom, @Gorock, @hutiefang76, @HyunWoo9930, @jjh75607, @KMGeon, @klopfdreh, @kojw1017, @kyungrae, @leedaegeon, @leestana01, @maequise, @mjd507, @noojung, @quaff, @scordio, @snowykte0426, @UsmanEjaz10, @won-seoop, @xxxxxxjun, and @yuseogi0218


Source spring-projects/spring-batch · v6.1.0-M2 · 2026-09-24 · upstream release

Mirrored verbatim for indexing. All rights belong to the upstream project.

Release notes are published by the upstream project and mirrored here for indexing. All rights belong to their authors.