There was a flurry of activity in the Spring ecosystem during the week of July 15th, 2024, highlighting milestone releases of: Spring Boot 3.4.0-M1; Spring Framework 6.2.0-M6; Spring Security 6.4.0-M1; Spring Session 3.4.0-M1; Spring Integration 6.4.0-M1; and Spring Modulith 1.3.0-M1; Spring AMQP 3.2.0-M1; and Spring for Apache Kafka 3.3.0-M1.
Spring Boot
The first milestone release of Spring Boot 3.4.0 delivers bug fixes, improvements in documentation, dependency upgrades and new features such as: support for structured logging as alternative to pattern layout logging; AssertJ support for the Spring Framework MockMvc
class with auto-configuration of the MockMvcTester
class; and improved support for Testcontainers and Docker Compose. More details on this release may be found in the release notes.
Similarly, versions 3.3.2 and 3.2.8 of Spring Boot provide improvements in documentation, dependency upgrades and resolutions to notable issues such as: a NullPointerException
during auto-configuration from the resolveOutcomesThreaded()
method, defined in the OnClassCondition
class, due to an instance of a ConditionOutcome
array being full; and an instance of the TestcontainersLifecycleBeanPostProcessor
class does not work correctly with scoped beans. Further details on these releases may be found in the release notes for version 3.3.2 and version 3.2.8.
Spring Framework
A week after the release of Spring Framework 6.2.0-M5, the sixth milestone release of Spring Framework 6.2.0 addresses a binary backward compatibility with previous 6.x generations, but also delivers new features such as: the ability to initialize the RequestPath
interface on demand in the AbstractServerHttpRequest
class; support for making the MapAccessor
class as read-only to align with the ReflectivePropertyAccessor
class; and the DefaultPartHttpMessageReader
should not eagerly instantiate the reactor scheduler. More details on this release may be found in the release notes.
Spring Security
The first milestone release of Spring Security 6.4.0 provides bug fixes, dependency upgrades and new features such as: a new CachingRelyingPartyRegistrationRepository
class as an implementation of the RelyingPartyRegistrationRepository
interface that defers the loading of the underlying registrations; and Kotlin support for the DefaultMethodSecurityExpressionHandler
class that eliminates this class attempting to mutate the state of immutable Kotlin Collections and Maps. There is also breaking change by adapting to form data not adding charset if it is UTF-8. Further details on this release may be found in the release notes.
Spring for GraphQL
Versions 1.3.2 and 1.2.8 of Spring for GraphQL have been released providing bug fixes and a notable improvement to resolve an issue where a schema field mapped to a Kotlin function was reported as unmapped by the SchemaMappingInspector
class. More details on these releases may be found in the release notes for version 1.3.2 and version 1.2.8.
Spring Session
The first milestone release of Spring Session 3.4.0 ships with bug fixes, dependency upgrades and new features such as: a resolution to an issue in which a default implementation of the UserDetails
interface, User
, is returned instead of a user-defined custom implementation; and a return to the MongoSession
class established as public
as it prevented developers from implementing the methods in the AbstractMongoSessionConverter
class. Further details on this release may be found in the release notes.
Spring Integration
The first milestone release of Spring Integration 6.4.0 delivers bug fixes, improvements in documentation, dependency upgrades and new features such as: implementations of the distributed LockRegistry
interface now throw a ConcurrentModificationException
from the unlock()
operation if ownership of the lock is lost in the database; and an improved subscription identifier for the channel adapters defined in the MQTT 5.0 specification. More details on this release may be found in the release notes and what’s new page.
Similarly, versions 6.3.2 and 6.2.7 of Spring Integration feature dependency upgrades and resolutions to notable issues such as: the spring-integration
actuator endpoint not working when multiple beans of the Micrometer MeterRegistry
class are registered; and a fix to the obtainObservationPatterns()
method, defined in the IntegrationManagementConfiguration
class, for a Java HashSet
sort to retain order of the provided patterns. Further details on these releases may be found in the release notes for version 6.3.2 and version 6.2.7.
Spring Modulith
Versions 1.3.0-M1, 1.2.2 and 1.1.7 of Spring Modulith have been released with bug fixes, dependency upgrades and new features such as: the addition of an option to allow the Documenter
class to clear the target folder before rendering documentation; and allow the use of the @ApplicationModuleTest
annotation outside of a module package. These releases also upgrade to Spring Boot 3.4.0-M1 and Spring Framework 6.2.0-M6. More details on these releases may be found in the release notes for version 1.3.0-M1, version 1.2.2 and version 1.1.7.
Spring AMQP
The first milestone release of Spring AMQP 3.2.0 provides bug fixes, dependency upgrades and new features such as: support for the RabbitMQ Consistent Hash Exchange Type (x-consistent-hash
); and a removal of methods deprecated in the RabbitListenerErrorHandler
interface. Further details on this release may be found in the release notes.
Spring for Apache Kafka
The first milestone release of Spring for Apache Kafka 3.3.0 ships with bug fixes, dependency upgrades and new features such as: a new ConcurrentContainerStoppedEvent
class to ensure all concurrent messages are processed before the application receives an instance of the ContainerStoppedEvent
class; and the ability for the RecordFilterStrategy
interface to receive an empty list when using batch messages. More details on this release may be found in the release notes.
Similarly, versions 3.2.2 and 3.1.7 of Spring for Apache Kafka provide dependency upgrades and a resolution to an issue where the getUnregisteredListenerContainer()
method, defined in the KafkaListenerEndpointRegistry
class, returns null
upon manually registering custom containers instead of using the @KafkaListener
annotation. Further details on these releases may be found in the release notes for version 3.2.2 and version 3.1.7.
Spring for Apache Pulsar
Versions 1.1.2 and 1.0.8 of Spring for Apache Pulsar have been released featuring numerous dependency upgrades such as: Spring Framework 6.1.10; Micrometer Metrics 1.13.2 and 1.12.8, respectively; and JUnit 5.10.3. These versions will be included in Spring Boot 3.3.2 and 3.2.8. More details on these releases may be found in the release notes for version 1.1.2 and version 1.0.8.