Releases: spring-projects/spring-framework
Releases · spring-projects/spring-framework
v5.1.20.RELEASE
⭐ New Features
- ContentCachingResponseWrapper should not add “Content-Length” when “Transfer-Encoding” is present #26192
- Wildcard is a valid Access-Control-Expose-Headers value #26116
- EntityManagerFactory startup failure in deferred mode is only available on first use #26095
- StompSubProtocolHandler logs failed authentication with error stack trace #26038
- DefaultSimpUserRegistry prevents event from being published if original SimpMessageHeaderAccessor cannot be found #26015
- Inefficient request handling inside ServletRequestDataBinder #26005
🪲 Bug Fixes
- Remove duplicate "property" in PropertyCacheKey.toString() #26243
- DataBuffer Leak in Server Response #26235
- PathMatchingResourcePatternResolver fails to resolve resources from JAR located in path with '#' on JDK 11+ #26106
- UrlPathHelper#removeJsessionid doesn't remove the jsessionid from the URL #26084
- NamedParameterJdbcTemplate.batchUpdate does not individually apply the SQL type from each SqlParameterSource argument #26074
- Order of profiles in tests is not preserved #26009
📔 Documentation
- DateTimeFormat ISO.DATE_TIME javadoc contains misleading default note #26136
🔨 Dependency Upgrades
- Upgrade to Reactor Californium-SR23 #26233
v5.0.20.RELEASE
⭐ New Features
- ContentCachingResponseWrapper should not add “Content-Length” when “Transfer-Encoding” is present #26193
- Inefficient request handling inside ServletRequestDataBinder #26006
- Avoid creation of unused logger instance in AbstractMediaTypeExpression #25903
🪲 Bug Fixes
- Remove duplicate "property" in PropertyCacheKey.toString() #26244
- UrlPathHelper#removeJsessionid doesn't remove the jsessionid from the URL #26085
- LinkedMultiValueMap downstream issue with MultiValueMapAdapter package private base class #25962
- Wrong type inference in Kotlin while overriding RequestMappingHandlerMapping#getMappingForMethod #25873
- ClassCastException when wiring bean using method injection (NullBean instead of 'null') #25870
- jsessionid breaks request mappings when removeSemicolonContent is turned off #25868
📔 Documentation
v4.3.30.RELEASE
⭐ New Features
- ContentCachingResponseWrapper should not add “Content-Length” when “Transfer-Encoding” is present #26194
- Inefficient request handling inside ServletRequestDataBinder #26007
- Avoid creation of unused logger instance in AbstractMediaTypeExpression #25904
🪲 Bug Fixes
- Remove duplicate "property" in PropertyCacheKey.toString() #26245
- UrlPathHelper#removeJsessionid doesn't remove the jsessionid from the URL #26086
- jsessionid breaks request mappings when removeSemicolonContent is turned off #25869
📔 Documentation
- DateTimeFormat ISO.DATE_TIME javadoc contains misleading default note #26138
v5.3.1
⭐ New Features
- Expose a public method "isClosed" to indicate whether the connection has been closed in WebSocketSession (WebFlux) #26043
- WebFlux missing programmatic handling of MappingJacksonValue #26035
- Optimize locking in AspectJProxyFactory for concurrent aspect instantiation #26034
- Upgrade SpelCompiler bytecode level to 1.8 and optimize for concurrent access #26033
- MergedAnnotationCollectors.toAnnotationSet() should not create intermediate ArrayList #26031
- SpEL doesn't work nicely with records #26029
- StompSubProtocolHandler logs failed authentication with error stack trace #26026
- Expose toEntityFlux methods in WebClient.ResponseSpec #26023
- Improve AdvisedSupport.getAdvisors() #26017
- Improve URI/query strings sanitization #26012
- DefaultSimpUserRegistry prevents event from being published if original SimpMessageHeaderAccessor cannot be found #26010
- DefaultWebClientBuilder copies references #25992
- Inefficient request handling inside ServletRequestDataBinder #25986
- Avoid multiple volatile reads/writes in a row where only one is enough #25899
- Allows Jackson2 encoders to log Throwable reason for not being able to serialize or deserialize #25892
- Mechanism to access request bound objects in WebClient filter in servlet env #25710
🪲 Bug Fixes
- Cannot be cast to class Publisher error with non suspending
@Transactional
functions #26052 - Fix wrong reference in UrlPathHelper.removeSemicolonContentInternal() #26050
- setTaskScheduler in StompBrokerRelayRegistration breaks chaining #26049
- Add FullyQualifiedAnnotationBeanNameGenerator.INSTANCE #26025
- Autowiring does not work reliably in case of dynamically changing prototype bean class #26019
- Order of profiles in tests is not preserved #26004
@Transactional
on suspending function returning a value always rollbacks #25998- SseEmitter: connection closed after first event #25987
@Nonnull
annotation breaks ServletRequestMethodArgumentResolver for Principal #25981- Spring MVC's locale resolver can no longer be customized in parent context #25290
📔 Documentation
- Fix kotlin example code which does not compile #26016
- Fix a broken Asciidoctor syntax in core-resources.adoc #25999
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.2.11.RELEASE
⭐ New Features
- StompSubProtocolHandler logs failed authentication with error stack trace #26037
- MergedAnnotationCollectors.toAnnotationSet() should not create intermediate ArrayList #26036
- DefaultSimpUserRegistry prevents event from being published if original SimpMessageHeaderAccessor cannot be found #26013
- DefaultWebClientBuilder copies references #25993
- Inefficient request handling inside ServletRequestDataBinder #25990
🪲 Bug Fixes
- Add FullyQualifiedAnnotationBeanNameGenerator.INSTANCE #26027
- Autowiring does not work reliably in case of dynamically changing prototype bean class #26020
- Order of profiles in tests is not preserved #26008
- SseEmitter: connection closed after first event #25989
📔 Documentation
- Fix a broken Asciidoctor syntax in core-resources.adoc #26000
v5.3.0
⭐ New Features
- Allow cache eviction for ConcurrentLruCache #25963
- Support Optional for query parameters in UriBuilder and UriComponentsBuilder #25951
- Deprecate
StringUtils.isEmpty(Object)
and replace remaining usage (e.g. withObjectUtils.isEmpty
) #25945 - Introduce RouterFunction attributes #25938
- Discover
@Sql
,@SqlConfig
,@SqlGroup
, &@SqlMergeMode
on enclosing class for nested test class #25913 - Support Propagation.NEVER for disabling test-managed transactions #25909
- Extensible invocation of TcpClient in ReactorNettyTcpClient #25889
- Ignore duplicate configuration metadata for cache key in the TestContext framework #25800
- Avoid use of String's for ContentDisposition type #25647
- Expose access to STOMP SimpleMessageBroker sessions user Principal #25191
- Allow programmatic registration of completion and error callbacks to transactional event listeners #24163
- Support suspending functions annotated with
@Transactional
#23575 - StompBrokerRelay doesn't send heartbeats to broker when
@MessageMapping
handles received messages #22822
🪲 Bug Fixes
@NestedTestConfiguration
should not be discovered on enclosing class for nested interface #25917- UriComponentsBuilder controller method argument has no path #25822
- Support multiple matchers in MockMvc Kotlin DSL #24103
📔 Documentation
- Document
@NestedTestConfiguration
support #25912 - Improve R2DBC DatabaseClient documentation regarding array/Collection-like bind parameters #25860
- Document
@DynamicPropertySource
use cases that require@DirtiesContext
#25850 - Use lowercase property names in SpEL examples #25538
🔨 Dependency Upgrades
- Upgrade to Kotlin Coroutines 1.4.0 #25969
- Upgrade to RSocket 1.1.0 #25956
- Upgrade to Reactor 2020.0.0 #25947
- Upgrade to Gradle 6.7 #25918
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.2.10.RELEASE
⭐ New Features
- Optimize Jackson resource management in codecs #25910
- Avoid creation of unused logger instance in AbstractMediaTypeExpression #25901
- Native Hibernate 5 bootstrapping with JTA transaction manager requires hibernate.transaction.coordinator_class=jta to be set #25858
- Cannot test
@RequestPart
multipart controllers with Servlet MockPart #25829 - Add MariaDB to the supported database products for procedures and functions #25811
- Optimize String argument resolution in MessageTag #25809
- Avoid repeated Charset resolution in MimeType #25808
🪲 Bug Fixes
- Incorrect http response for a request using the Range header for pre-compressed resources #25976
@ActiveProfiles
with same profiles but different order results in duplicate ApplicationContext #25973- LinkedMultiValueMap downstream issue with MultiValueMapAdapter package private base class #25960
- DataBufferUtils.CompositeMatcher causes poor performance when one or more matchers does not match #25915
- HttpSeverOperations overrides content-length to 0 on HTTP HEAD #25908
- jsessionid breaks request mappings when removeSemicolonContent is turned off #25864
- JettyClientHttpConnector triggers early cancellation #25849
- Race condition in DataBufferUtils.readAsynchronousFileChannel resulting in FD leak (Channel remains open) #25831
- SimpMessagingTemplate.convertAndSend results in UnsupportedOperationException when Spring Cloud Sleuth is present #25821
- ClassCastException when wiring bean using method injection (NullBean instead of 'null') #25806
- Thread-scoped bean creation freezes if dependent bean is retrieved before dependency bean #25801
- Sending an event as part of the EMF lock triggers a deadlock #25799
- Wrong type inference in Kotlin while overriding RequestMappingHandlerMapping#getMappingForMethod #25657
- SseEmitter (ResponseBodyEmitter) keeps collecting messages if not initialized #25442
📔 Documentation
- Correct DispatcherServlet initialization sample webmvc.adoc #25965
- Document that TransactionalEventListener only works with non-reactive transactions #25805
- Published reference documentation contains unnecessary folders and files #25783
- Incorrect example in javadocs of Assert.notNull(object, messageSupplier) #25774
🔨 Dependency Upgrades
v5.1.19.RELEASE
⭐ New Features
- Optimize String argument resolution in MessageTag #25923
- Avoid creation of unused logger instance in AbstractMediaTypeExpression #25902
- Cannot test
@RequestPart
multipart controllers with Servlet MockPart #25894 - Native Hibernate 5 bootstrapping with JTA transaction manager requires hibernate.transaction.coordinator_class=jta to be set #25862
- Add MariaDB to the supported database products for procedures and functions #25812
🪲 Bug Fixes
- Incorrect http response for a request using the Range header for pre-compressed resources #25979
@ActiveProfiles
with same profiles but different order results in duplicate ApplicationContext #25974- LinkedMultiValueMap downstream issue with MultiValueMapAdapter package private base class #25961
- jsessionid breaks request mappings when removeSemicolonContent is turned off #25867
- SimpMessagingTemplate.convertAndSend results in UnsupportedOperationException when Spring Cloud Sleuth is present #25835
- Wrong type inference in Kotlin while overriding RequestMappingHandlerMapping#getMappingForMethod #25818
- ClassCastException when wiring bean using method injection (NullBean instead of 'null') #25807
📔 Documentation
- Published reference documentation contains unnecessary folders and files #25794
- Incorrect example in javadocs of Assert.notNull(object, messageSupplier) #25775
🔨 Dependency Upgrades
- Upgrade to Reactor Californium-SR22 #25948
v5.3.0-RC2
⭐ New Features
- Compatibility with Jackson 2.12 #25907
- Loggers apparently constructed on a per HTTP request basis in reactive web code cause CPU overhead #25900
@ControllerAdvice
order defined via@Order
on a@Bean
method is not applied #25872- Add missing awaitBodilessEntity and createExceptionAndAwait ClientResponse extensions #25866
- Add Dependencies Manifest Entry to spring-core #25852
- Subclasses of UrlBasedViewResolver could avoid reflection when creating instances of View #25847
- Add option to disable Last-Modified handling when serving static resources #25845
- FormHttpMessageConverter to preserve parameters from the input MediaType #25839
- Request data binding fails for params with an empty array "[]" suffix #25836
- Support for an async determination of status and headers with a WebMvc HandlerFunction #25828
- Deprecate LiveBeansView #25820
- MultipartFile[] required controller param, not throwing exception #25819
- Optimize StringUtils trimLeading/Trailing methods #25810
- Set the sameSite cookie attribute in ClientHttpResponse implementations #25785
- Unable to change Clock for spring framework scheduling #25782
- Resolve Principal argument only when not annotated #25780
- Use the function endpoint, filter the handler function, and find that remoteAddress is null, params is empty #25776
- Add kotlinx.serialization JSON support to Spring WebFlux #25771
- Make path pattern optional in router functions #25752
- Deprecate WebClient#exchange() and provide safer alternatives #25751
- Easing the application of CORS default settings through the WebMvcConfigurer#corsConfigurer method #25716
- Empty or blank required UUID header validation results in 200 response status #23939
- Support suspending handler methods in Spring MVC #23611
- Introduce Converter.andThen(...) #23379
- Remove inefficiency in HttpStatus.series() #22366
- Provide Gson/JSON-B MessageConverter for spring-messaging (aligned with spring-web) #21496
- Discover test configuration on enclosing class for nested test class [SPR-15366] #19930
🪲 Bug Fixes
- WebTestClient no longer captures the URI template #25854
- Webflux Routing DSL's onError filters execute in unexpected order #25541
- TransactionalOperator.executeAndAwait returns value too early #25007
📔 Documentation
- Document DefaultPartHttpMessageReader #25827
- Update WebFlux documentation with regards to logging appenders #25547
- Upgrade to Asciidoctor Gradle plugin 3.x #24991
🔨 Dependency Upgrades
- Upgrade to Kotlin Coroutines 1.4.0-M1 #25914
- Upgrade to RSocket 1.1.0-RC1 #25898
- Upgrade to Reactor 2020.0.0-RC2 #25884
- Upgrade to Kotlin 1.4.10 #25779
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.3.0-RC1
⭐ New Features
- MimeMessageHelper should not encode attachment filenames by default #25770
- A beforeCommit chain failure invariably results in a 500 response #25753
- Improve performance of JdkDynamicAopProxy.getProxy(ClassLoader) #25660
- Add URI variables to request context in AbstractUrlHandlerMapping (reactive) #25648
- Public method in RSocketMessageHandler to register any handler method #25639
- Allow early decoration of request and response in WebFlux #25633
- Spring Test: Methods should allow supertypes of Matcher using lower bounded wildcards #25610
- WebSocket configuration doesn't work properly with the buffer size limitation #25581
- Declare interfaces as
@FunctionalInterface
where feasible #25580 - Call StartupStep.end in finally block #25572
- Support filename hint for client side use of ResourceDecoder #25516
- No way to set timeout for the requests when using Jetty reactive httpclient #25493
- Mime type "application/*" is not compatible with "application/vnd+json" #25350
- Avoid resizing of fixed-size HashMap #25349
- Support RSocket Load Balancing #25333
- WebClient HTTP Request Timeout #25115
- Support a
RowMapper<T>
for Java record classes #24695 - Data binding for Java record classes #24391
- Failure to bind a component of a form backing object using constructor binding causes the object to be null #24372
- Concurrent access to ParsedSql cache in NamedParameterJdbcTemplate #24197
- WebClient: wrap connection exceptions #23842
- Extract MimeTypeUtils.ConcurrentLruCache and make it public #22789
- WebSocket support with
@EnableWebFlux
#22587 - Add kotlinx.serialization JSON support to Spring MVC #21188
- Common API for MockMvc tests and for real HTTP tests #19647
🪲 Bug Fixes
- Upgrading from Boot 2.3.3 or 2.4-M1 to Boot 2.4-M2 uses 125mb heap in BitsCronField #25687
- Copy httpHandlerDecorator in copy constructor for WebHttpHandlerBuilder #25656
- MockMvc does not correctly initialize the request for non-file mock Part uploads #25602
- WebFlux application server add server.forward- Headers - Strategy = Framework RouterFunction endpoint 404 #25270
📔 Documentation
- Fix typo in Regular Expression Pointcuts docs #25767
- Fix typo regarding Ordered interface in core-aop.adoc #25759
- Fix typo in websocket.adoc #25630
- Eliminate unnecessary word in core-bean.adoc that causes repetition #25585
- Publish documentation under reference/html folder #25071
🔨 Dependency Upgrades
- Upgrade to RSocket 1.1 M2 #25729
- Upgrade to Reactor 2020 RC1 #25728
- Upgrade to Kotlin 1.4.0 #25617
- Upgrade to Gradle 6.6 #25578
- Upgrade to JUnit 5.7 #25527
❤️ Contributors
We'd like to thank all the contributors who worked on this release!