Releases: spring-projects/spring-framework
Releases · spring-projects/spring-framework
v5.1.11.RELEASE
⭐ New Features
- Race condition affecting performance in AbstractJaxb2HttpMessageConverter - JAXBContext creation #23894
- Support for limits on input stream processing in WebFlux codecs #23885
- Allow setting primary flag on BeanDefinitionBuilder #23808
- Handling of ResponseStatusException to also include setting of response headers #23800
🪲 Bug Fixes
- Reorder date formatting converter in registrar #23896
- MockServletContext should treat InvalidPathException like an IOException #23888
- Preserve expires attribute in MockCookie #23881
🔨 Dependency Upgrades
- Upgrade to Reactor Californium-SR13 #23870
v5.2.0.RELEASE
⭐ New Features
- Add support for MockRestServiceServer to verify that a header does not exist #23721
- Set name for shutdown hook Thread #23670
- Use Reactor's new Schedulers.boundedElastic() #23661
- Avoid ArrayIndexOutOfBoundsException in SpEL's Indexer #23658
- Fix RSocketRequester API for requests without payload #23649
- Allow registration of RSocket metadata extractors #23645
- Allow
@Import
and@ComponentScan
classes to use constructor injection #23637 - Add SVG mapping to mime.types file for JavaMail support #23629
- Provide support for disabling cron-based scheduled jobs registered via SchedulingConfigurer #23568
- Log HTTP method in logging filters and revise log message format #23567
- Omit cancellation of transactional Monos in TransactionOperator #23562
- PathMatchingResourcePatternResolver cannot load resources with a '#' in their file name within JARs #23532
- Improve parity between Java and Kotlin router DSL #23524
- Provide an memory efficient alternative to ClientHttpRequestInterceptor #22002
🪲 Bug Fixes
- Newly added TransactionOperations.execute(Runnable) breaks existing Kotlin code #23724
- ServerRequestExtensionsTests#
remoteAddressOrNull with value()
fails on Java 13 #23677 - PathPatternParserTests#regexPathElementPatterns() fails on Java 13 #23669
- BOM has explicit
compile
scope for each dependency #23660 - AbstractResource causes early log4j initialization #23655
- Improper UTF-8 handling in MockMvc for JSON response #23622
- Memory leak when using
@Async
after upgrading from 5.1 to 5.2 #23571 - FactoryBean registered with explicit target type cannot be autowired by type #23561
📔 Documentation
- Fix typo in DispatcherServlet Javadoc #23726
- Clarify units handling in DataSize javadoc #23697
- Upgrade "Spring Framework Versions" page to mention JDK 13 support #23674
- Document WebMvc.fn #23657
- Mention Ordered and
@Order
support for components in Javadoc #23636 - Fix typo #23603
- Document minimum JDK 8 update version #23563
- RSocket documentation #23147
🔨 Dependency Upgrades
- Upgrade to RSocket 1.0.0.RC5 #23698
- Upgrade to Reactor Dysprosium-RELEASE #23695
- Upgrade to Spring Doc Resources 0.1.3 #23679
- Upgrade to Coroutines 1.3.2 #23663
- Upgrade to Jackson 2.10.0 #23662
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.1.10.RELEASE
⭐ New Features
- Backport PR #22485 (Exclude jdk package in ShadowingClassLoader) to 5.1 branch #23641
- SimpleCacheManager should not synchronize on AbstractCacheManager#cacheMap #23635
- MockClientHttpResponse loses original HttpStatus code #23599
- BeanUtils.isSimpleValueType() should not consider void or Void as a simple value type #23573
- ClassUtils.isPrimitiveOrWrapper(…) and friends should consider Void.class a primitive wrapper for void.class #23572
- Custom DefaultResourceLoader subclass should be able to consume context-provided ProtocolResolvers #23564
- sendBufferSizeLimit exceeded should be logged at warn level #23534
- Provide a method to get the original bean name from a scoped target's bean name #23514
- Raise 400 instead of 500 on failure to find index of lookupPath within requestUri in ResourceUrlEncodingFilter #23508
- IncompatibleClassChangeError on Jetty WebSocket ExtensionFactory #23500
- Respect already set
content-length
header for HEAD request. #23484 - Static resource support does not handle requests for a file with % character in its name #23463
- Errors.NativeIoException from WebClient on WebFlux server does not set the response status #23319
🪲 Bug Fixes
- SameSite cookie attribute missing when using WebFlux #23693
- Ensure ClassFilter and MethodMatcher implementations are cacheable #23659
- LinkedCaseInsensitiveMap does not track removals via keySet, entrySet, or values #23644
- Wait for complete disposal of Reactor Netty resources in ReactorResourceFactory #23631
- Spring fails to determine that XML is DTD-based if DTD declaration is followed by a comment #23605
- ClassCastException when use ServerHttpResponseDecorator to modify response of websocket #23598
- Infinite loop due to doFilterNestedErrorDispatch() method in OncePerRequestFilter #23596
- Bean definition override leads to NPE due to inconsistent equality check #23593
- Fix DefaultListableBeanFactory#copyConfigurationFrom #23569
- Response with an invalid content type hangs when using WebFlux with Jetty #23553
- Entry set of read-only HttpHeaders loses original headers' ordering #23551
- DefaultListableBeanFactory throws a NullPointerException when resetBeanDefinition() is invoked concurrently #23542
- No way to replace Set-Cookie header via MockHttpServletResponse #23512
- ConcurrentModificationException in MockHttpServletResponse #23460
- Synchronized blocks in MethodOverrides are hurting concurrency #23448
- AnnotationAttributes#assertNotException should check for instance of Throwable #23424
- Reactive JettyRequestUpgradeStrategy returns 'No WebSocketServerFactory available' on startup with simultaneous handshakes #23313
- WebFlux with Tomcat, intermittent timeout when creating response #23096
📔 Documentation
- Improve docs for AnnotatedBeanDefinitionReader,
@Configuration
, and@ContextConfiguration
regarding "annotated classes" #23638
🔨 Dependency Upgrades
- Upgrade to Reactor Californium-SR12 #23694
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.2.0.RC2
⭐ New Features
- Invalid partial content requests possible with start byte = resource-byte-count #23576
- Support invoking static methods with ReflectionTestUtils.invokeMethod() #23504
- Detect ClientHttpConnector to use by checking classpath #23493
- Remove statusCode state from ContentCachingResponseWrapper #23490
- Fix "array index out of bounds" problem reported by LGTM.com #23485
- Explicit attribute overrides configured via
@AliasFor
not supported for components picked up via component scanning #23402 - Provide a way to predict bean types without initializing FactoryBeans #23374
- Pre-allocate NoTransactionException in TransactionContextManager #23360
- Use System.nanoTime() instead of System.currentTimeMillis() in StopWatch #23235
- Correct encoding and decoding of "message/x.rsocket.routing.v0" #23137
- Add support for Coroutines transactions #22915
🪲 Bug Fixes
- Cannot use relative path following placeholder in
@TestPropertySource
locations #23544 - Spring Webflux 5.2.0.M2 - Kotlin coroutines - ServerRequest.awaitPrincipal always null #22986
📔 Documentation
- Fix typos related to indefinite articles #23555
- Adding Kotlin code examples to Testing documentation. #23545
- Add
@since
for getCacheFilter and setCacheFilter #23519 - Wiki build instructions for local Maven repo are outdated #23517
- Fix unmatched parenthesis in the documentation of ContextHierarchy #23487
- Modify the javadoc of
@EnableWebFlux
annotation #23457 - Kotlin examples in Spring Core docs should use extension functions with reified types #23456
- Improve language-switch CSS #23454
- Fix data access documentation typo #23450
- Fix / in Javadoc #23439
- Reference documentation for ContextClosedEvent is misleading #23436
- Reference documentation for
@Autowired
's required attribute is misleading #23428 - Provide code samples in Kotlin in addition to Java [SPR-17245] #21778
🔨 Dependency Upgrades
- Upgrade to Reactor Dysprosium-RC1 #23579
- Upgrade to RSocket 1.0 RC3 #23543
- Upgrade to Kotlin 1.3.50 #23536
- Upgrade to Kotlin Coroutines 1.3.0 #23535
- Upgrade to CGLIB 3.3 #23453
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.2.0.RC1
⭐ New Features
- Deprecate mutable aspects of MethodParameter #23385
- Add status code 425 ("Too Early") to HttpStatus enum #23384
- Search for annotations on enclosing classes with MergedAnnotations API #23378
- RSocketRequester.Builder support for ConnectionSetupPayload #23368
- Introduce SimpleUrlHandlerMapping constructor that accepts an order and a Map #23362
- Introduce interface cache for proxied EntityManager and Query types #23345
- Provide functionality similar to Spring Boot's BeanTypeRegistry #23341
- Add attribute support for FactoryBean bean definitions #23339
- Consider generics when predicting FactoryBean types #23338
- Cache isFactoryBean detection #23337
- Retain merged bean definition caches during post processing #23336
- Add missing ResolvableType variants of getBeanNamesForType #23335
- Add multi-prefix comment support for
@SqlConfig
#23331 - Support
@TestPropertySource
as a repeatable annotation #23320 - Add DataBuffer::toString(Charset) #23317
- Improvements to RSocketStrategies #23314
- Support for template routes with encoded separator in RSocketRequester #23310
- Treat null path as non-matching pattern in AntPathMatcher #23297
- Add multi-prefix comment support for SQL scripts #23289
- Add a ScriptEngine factory to ScriptTemplateConfigurer #23258
- Log at WARN level in case of contradicting PersistenceUnitManager setup #23257
- ExchangeFilterFunctions.basicAuthentication(String, String) should cache the encoded credentials #23256
- Introduce TransactionOperations.execute(Runnable) convenience method #23250
- ExceptionHandlerExceptionResolver warns when re-throwing the exception cause #23233
- Change
@TestConstructor
.autowire attribute into an enum #23224 - Improve performance of FormContentFilter #23216
- MimeTypeUtils.parseMimeType returns null MIME type in case of high concurrency #23211
- Add explicit support for multipart/mixed in FormHttpMessageConverter #23209
- AbstractMessageConverterMethodProcessor results in 406 even when ResponseEntity presets content type #23205
- BasicAuthenticationInterceptor should cache the encoded credentials #23204
- Introduce addSupportedMediaTypes() in FormHttpMessageConverter #23203
- Add no-op TransactionOperations implementation #23198
@CacheEvict
beforeInvocation with transaction does not work #23192- Presort beans in ControllerAdviceBean.findAnnotatedBeans() #23188
- Consider generics on ApplicationListener
@Bean
methods #23178 - ConnectionMapping annotation for handling of RSocket connection-level frames #23177
- Support for registering handlers in RSocketRequester.Builder #23170
- Leverage new Kotlin script templating support #23165
- Improve RSocketRequester.ResponseSpec Kotlin extensions #23164
- Support Ordered interface for
@ControllerAdvice
beans #23163 - Support multipart/related and multipart/mixed MediaTypes in RestTemplate #23159
- RSocket Metadata Mimetype "text/plain" and "application/json" support #23157
- onStatus throws away default status handler #23155
- Forbid null HttpMessageConverter in RestTemplate and HttpMessageConverterExtractor #23151
- Support target type in MockMvcResultMatchers.jsonPath() #23141
- UrlBasedViewResolvers should not override custom requestContextAttribute with null #23129
- Add queryParams and replaceQueryParams with Collection to UriBuilder #23119
- Provide functionality similar to Spring Boot's BeanTypeRegistry #23056
- Expose default error handling from RequestHeadersSpec::retrieve for use with RequestHeadersSpec::exchange #22825
- Use the accepted profiles on the BeanDefinitionDsl #22393
- Consider conditional view caching #22391
- WebClient's ResponseSpec should provide access to response headers #22368
- Support for non-blocking event listener methods [SPR-17298] #21831
- Merge class-level and method-level
@Sql
declarations #1835
🪲 Bug Fixes
@TransactionalEventListener
should not receive an event if no transaction is active #23276- MockMvc no longer handles UTF-8 characters #23219
- NullPointerException when FormContentFilter handles a request with no content type #23215
- RSocketRequester.ResponseSpec Kotlin extensions issue #23185
- PathPattern::extractPathWithinPattern does not use custom separator #23168
- PathPatternRouteMatcher should parse routes with custom separator #23167
- DefaultMultipartMessageReader.FilePartPart.content not available under Reactor Netty #23131
- DefaultMultipartMessageReader.FilePart.transferTo fails occasionally #23130
📔 Documentation
- Fix grammar in package-info.java #23401
- Add since tag for ClientResponse.Builder.request() #23364
- Fix typo in data-access.adoc #23247
- Fix typo in CONTRIBUTING.md #23180
- Document supported
@Transactional
attributes in the TestContext framework #23149 - Document WebFlux FreeMarker macro support in Reference Manual #23133
- Add since for JettyClientHttpConnector change #23128
- Improve Kotlin integration testing documentation #22875
🔨 Dependency Upgrades
- Upgrade to RSocket 1.0.0-RC2 #23359
- Upgrade to ASM 7.2 [#23156](https://github.com/spri...
v5.1.9.RELEASE
⭐ New Features
- WebClient's retrieve doesn't support custom HTTP status code #23367
- Can't wrap a ClientResponse with a custom status code in a builder #23366
- Javadoc missing on some public BeanDefinitionParserDelegate methods #23349
- In contrast to the Javadoc, ServerHttpRequest.Builder implementation does not override headers #23333
- Hibernate Query.list() is not included in SharedEntityManagerCreator.queryTerminatingMethods set, causing database connection not to be unreleased when query is proxied #23248
- Exception while WebClient onStatus handler is applied leads to ByteBuf leak #23230
- Error signal not propagated if writeFunction in ChannelSendOperator fails immediately #23175
- PathPatternParser does not allow any non-Java characters in variables like "-" #23101
🪲 Bug Fixes
- MethodParameter.equals is too coarse-grained for its use in HandlerMethodArgumentResolverComposite #23352
- Session.close() accidentally triggers creation of TransactionAwareDataSourceProxy Connection #23346
- Inconsistent use of getInterfaceMethodIfPossible for init method invocation #23323
- ResolvableType.forRawClass fails isAssignable against TypeVariable #23321
- ForwardedHeaderTransformer preserves escape sequences when applying X-Forwarded-Prefix #23305
- Accept header with trailing comma produces HTTP "406 Not Acceptable" #23241
- FlashMapManager throws StringIndexOutOfBoundsException for empty target URL path #23240
- SpEL ReflectivePropertyAccessor: ConversionService missing annotations on concrete implementations #23210
- Defensively register ReactiveReturnValueHandler for messaging methods #23207
- Raise log level when bean destruction fails #23200
- New OncePerRequestFilter behavior breaks RequestContextFilter on Jetty after sendError #23196
- SpringValidatorAdapter's ObjectError subclass is not Serializable #23181
- WebSocketHttpRequestHandler not writing headers after interceptor returns false #23179
- Reliable detection of user change from interceptor in StompSubProtocolHandler #23160
- Fixes issue with optional
@RequestPart
Mono argument being resolved to null instead of Mono.empty #23070
📔 Documentation
- Add Javadoc since for Jaxb2XmlDecoder(MimeType...) #23353
- Fix typo in webflux.adoc #23329
- Clarify use of MultipartBodyBuilder with RestTemplate #23295
- Improve documentation for
@Autowired
constructors #23263 - AbstractCacheManager.getCache() breaks contract of CacheManager.getCache() #23193
- PriorityOrdered Javadoc is misleading #23187
- Document that Ordered is not supported for
@ControllerAdvice
beans #23172 - Fix Jackson documentation broken links #23153
- Document how to specify Jackson JSON view serialization hints #23150
- HtmlUtils Javadoc refers to deprecated Apache Commons Lang #23122
- Docs for Spring MVC Test should cover async requests [SPR-15099] #19666
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.0.15.RELEASE
⭐ New Features
- Javadoc missing on some public BeanDefinitionParserDelegate methods #23398
- Thread-safe removal of destruction callbacks in web scopes #23118
- Guard against ConcurrentModificationExceptions in the systemProperties PropertySource #23112
- Avoid expensive assertions in web resource resolution #22964
🪲 Bug Fixes
- Session.close() accidentally triggers creation of TransactionAwareDataSourceProxy Connection #23396
- MethodParameter.equals is too coarse-grained for its use in HandlerMethodArgumentResolverComposite #23386
- ResolvableType.forRawClass fails isAssignable against TypeVariable #23322
- FlashMapManager throws StringIndexOutOfBoundsException for empty target URL path #23245
- MappingMediaTypeFileExtensionResolver ConcurrentModificationException #23113
- Fix MockHttpServletRequest.setCookies to produce single Cookie header #23085
- Fix ScriptUtils for MS Windows line ending #23027
📔 Documentation
- Improve documentation for
@Autowired
constructors #23309 - Document that Ordered is not supported for
@ControllerAdvice
beans #23173 - Reintroduce author list and copyright notice #23080
- spring-mvc.xsd stale-if-error attribute documentation incorrect #23000
- AbstractBeanDefinition.getBeanClass() javadoc misleads about returning null #22966
v4.3.25.RELEASE
⭐ New Features
- Javadoc missing on some public BeanDefinitionParserDelegate methods #23399
- Avoid expensive assertions in web resource resolution #22965
🪲 Bug Fixes
- Session.close() accidentally triggers creation of TransactionAwareDataSourceProxy Connection #23397
- MethodParameter.equals is too coarse-grained for its use in HandlerMethodArgumentResolverComposite #23387
- FlashMapManager throws StringIndexOutOfBoundsException for empty target URL path #23246
- Fix ScriptUtils for MS Windows line ending #23026
📔 Documentation
v5.2.0.M3
⭐ New Features
- Log exception when closing InputStream in AbstractResource #23116
- Add MultiValueMap.addIfAbsent method #23111
- Allow Printers and Parsers to be registered individually to FormatterRegistry #23110
- Improve FreeMarker macro support in spring-webflux #23105
- Annotate Object#equals parameter with
@Nullable
#23093 - Allow separator configuration in PathPatternParser #23092
- Side effect from ProducesRequestCondition cache with multiple RequestMappingHandlerMapping beans #23091
- Refine Coroutines adapter registration activation #23087
- Rename TransactionSynchronizationManager#currentTransaction to something more meaningful #23086
- Support filename input in MultipartBodyBuilder #23083
- Support consistent ordering of string adapting properties #23081
- Add constants for application/cbor to MediaType #23042
- Avoid unnecessary call to get message type #23040
- Support for fine-grained by-type references in the bean definition model #23032
- RestTemplateXhrTransport fails for a StreamingHttpOutputMessage type request #23030
- Provide utility for writing Properties to a file in a repeatable manner #23018
- Expose StompSubProtocolHandler and StompBrokerRelayMessageHandler metrics #23015
- Ensure access to configured mime types in client-side RSocket requester or responder #23012
- Consistently support CompletionStage/CompletableFuture in ReactiveAdapterRegistry #23011
- Add FreeMarker macro support in spring-webflux #23002
- NamedParameterJdbcTemplate: treat Iterable parameters like Collections #22981
- Add JettyClientHttpConnector that accepts a HttpClient instance and a JettyResourceFactory #22977
- Add HttpHeaders.getOrEmpty(…) to avoid clients having to default to an empy list #22949
- messageBrokerTaskScheduler incorrect type #22943
- Support composite metadata in RSocketRequester and MessageHandlerAcceptor #22798
- Add leading slash for path predicate if not present #22795
- Enable use of PathPattern for RSocket routing #22642
- Ensure indexer output is deterministic and repeatable #22383
🪲 Bug Fixes
- Soft reference-based cache causes confusing exception message from AnnotationTypeMapping resolveAliasTarget #23010
📔 Documentation
- Error in javadoc for o.s.web.servlet.function.ServerResponse #23075
- Document
@Value
support in the reference manual #23052 - Fix typo #23046
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.1.8.RELEASE
⭐ New Features
- Thread-safe removal of destruction callbacks in web scopes #23117
- Guard against ConcurrentModificationExceptions in the systemProperties PropertySource #23063
- OncePerRequestFilter does not work properly on Error Dispatch on Jetty #22989
- SimpleMessageListenerContainer - add possibility to disable manual recovery #22987
- AntPathMatcher#isPattern ignores template variables #22959
- Avoid expensive assertions in web resource resolution #22955
- WebFlux: Mono does not invoke onComplete(), but instead cancel() #22952
- Illegal reflective access on shutdown of ExecutorService #22939
- Illegal reflective access by SpEL ReflectivePropertyAccessor #22242
🪲 Bug Fixes
- Fix MockHttpServletRequest.setCookies to produce single Cookie header #23074
- MappingMediaTypeFileExtensionResolver ConcurrentModificationException #23064
- Weird behaviour when calling
ApplicationContext.getBean()
with a null class reference #23045 - StompSubProtocolHandler does not close the connection after sending an ERROR frame #23039
- WebFlux AbstractView does not allow null model values anymore #23038
- Fix ScriptUtils for MS Windows line ending #23019
- validation error message {0} is not working #23014
- AnnotatedElementUtils.findMergedAnnotation not working for javax annotations (e.g. NotNull) #22957
- WebFlux AbstractView does not update BindingResult for resolved async attributes #22933
- HeaderResultMatchers should not import org.junit.Assert #22932
📔 Documentation
- Reintroduce author list and copyright notice #23049
- spring-mvc.xsd stale-if-error attribute documentation incorrect #22983
- AbstractBeanDefinition.getBeanClass() javadoc misleads about returning null #22960
- Fix typo in package-info.java #22941
❤️ Contributors
We'd like to thank all the contributors who worked on this release!