Releases: spring-projects/spring-framework
Releases · spring-projects/spring-framework
5.0 M5 Release
⭐ New Features
- WebTestClient assert failures should log request and response details [SPR-15249] #19814
- Use Map.getOrDefault in AbstractSqlParameterSource.getSqlType [SPR-15238] #19803
- Use Class.getTypeName() where appropriate [SPR-15237] #19802
- Expose ResponseCookie map from ClientResponse [SPR-15236] #19801
- Update body related options in ClientRequest [SPR-15234] #19799
- Improve adding defaults to WebClient requests [SPR-15208] #19772
- Create reactive HiddenHttpMethodFilter to support alternate mappings [SPR-15206] #19770
- Option to get the remote ip from a ServerWebExchange [SPR-15200] #19764
- RedirectAttributes Flash scoped variables absent when redirecting using ResponseEntity [SPR-15176] #19742
- AbstractValueAdaptingCache#toStoreValue should throw an exception if the value is null and allowNulls is false [SPR-15173] #19739
- Improve initialization of org.springframework.tests.Assume [SPR-15163] #19729
- Add Kotlin idiomatic extensions for JDBC API [SPR-15158] #19724
- Support DataBuffer as reactive handler method results [SPR-15148] #19714
- Functional Web API support for HTML form processing [SPR-15144] #19710
- Provide a method that exposes whether or not a reactive HTTP response has been committed [SPR-15135] #19701
- Assign a default order to ResponseStatusExceptionHandler bean created by WebReactiveConfigurationSupport [SPR-15134] #19700
- Support UNSUBSCRIBE for a durable STOMP subscription [SPR-15131] #19697
- Add bodyToMono() and bodyToFlux() Kotlin extensions [SPR-15128] #19695
- Support Gradle-style API for Kotlin bean registration [SPR-15126] #19693
- Provide convenient ways to specify query parameters to WebClient [SPR-15124] #19691
- Add Kotlin array-like addAttribute to Model and ModelMap [SPR-15119] #19686
- Avoid the need to specify Supplier in Kotlin bean registration API [SPR-15118] #19685
- Add new media types for RFC 7807: Problem Details for HTTP APIs [SPR-15110] #19677
- Add support for JSON Streaming [SPR-15104] #19671
- Upgrade to Kotlin 1.1-beta [SPR-15100] #19667
- Possible performance issue in the generation of JSON in Spring Web Reactive [SPR-15095] #19662
- WebFilter ordering in WebHttpHandlerBuilder only works on instances [SPR-15074] #19640
- Provide a Kotlin DSL for the functional Web API [SPR-15065] #19631
- Support i18n and nested template loading in ScriptTemplateView render function [SPR-15064] #19630
- Add a Reactive ScriptTemplateView [SPR-15063] #19629
- Simplify options for strict encoding of URI variable when using UriComponentsBuilder [SPR-14970] #19536
- Improve nested routes API [SPR-14954] #19521
- Disable streaming when reading to Resources in RestTemplate [SPR-14882] #19448
- Reactive MockMvc equivalent [SPR-14590] #19159
- HTTP request pattern matching refinements [SPR-14544] #19112
- Support for MockPart in Spring MVC Test [SPR-14253] #18826
- Introduce MockPart in spring-test [SPR-14252] #18825
- Wildcard mapping for path segments at the end of a
@RequestMapping
[SPR-14193] #18766 - Provide MockMvc support for Stateful HttpSession [SPR-13820] #18393
- Support for Servlet 4.0 API [SPR-12674] #17273
- StandardServletMultipartResolver should support MaxUploadSizeExceededException against common servers [SPR-9294] #13932
- Rollback of transaction participating in nested transaction should not enforce rollback of global transaction [SPR-6568] #11234
🪲 Bug Fixes
- PathPatternParser matches root path against path variable [SPR-15264] #19829
- StringIndexOutOfBoundsException in PathPattern.extractPathWithinPattern [SPR-15259] #19824
- PathPatternParser#parse method failed with java.lang.IndexOutOfBoundsException [SPR-15246] #19811
- RestTemplate drops trailing / from request URI [SPR-15201] #19765
- XmlExpectationsHelper.assertXmlEqual missing "regardless of order" case [SPR-15156] #19722
@RequestParam
injects a raw undecoded string for reactive HTTP requests [SPR-15140] #19706- Reactive RedirectView throws exception if no RequestDataValueProcessor is present [SPR-15136] #19702
- Fix error handling in Jackson2JsonDecoder [SPR-15112] #19679
- Wrong path to RequestUpgradeStrategies in HandshakeWebSocketService [SPR-15089] #19655
- HttpHeaders.keySet() is no longer case-insensitive [SPR-15087] #19653
- UriComponentBuilder doesn't work with encoded HTTP URL having '+'. [SPR-14828] #19394
4.3.6 Release
⭐ New Features
- CookieLocaleResolver may disturb error rendering when locale cookie has a malformed value [SPR-15182] #19748
- Tolerate null return from getNegotiatedExtensions (for Jetty 9.4.1 compatibility) [SPR-15180] #19746
- DispatcherServet.checkMultipart() does not consider javax.servlet.error.exception that has a MultipartException cause [SPR-15178] #19744
- Scheduled/JmsListenerAnnotationBeanPostProcessor free heap space [SPR-15175] #19741
- MockRestServiceServer should allow for an expectation to never occur. [SPR-15168] #19734
- MockSessionCookieConfig#maxAge defaults to 0 instead of -1 [SPR-15142] #19708
- org.springframework.messaging.handler.invocation.InvocableHandlerMethod should not mention "controller" [SPR-15139] #19705
- MockHttpServletRequestBuilder should support multiple locales [SPR-15116] #19683
- Add MimeType and MediaType constants for RSS [SPR-15109] #19676
- Update MySQLMaxValueIncrementer to not rely on MYISAM [SPR-15107] #19674
- Netty4ClientHttpRequestFactory should use SNI for TLS connections [SPR-15101] #19668
- Unable to specify factory bean in BeanDefinitionBuilder [SPR-15098] #19665
- Clarify WebContentInterceptor path mappings and efficiently match them [SPR-15096] #19663
- Improve performance of StringUtils.capitalize() [SPR-15094] #19661
- Implement MessagingException.toString() [SPR-15091] #19657
- GenericTableMetaDataProvider could use non standard named TableMeta-Schema if only one found [SPR-15090] #19656
- Remove String#toCharArray from ScriptUtils [SPR-15075] #19641
- Track bean dependencies for calls between
@Bean
methods within@Configuration
classes [SPR-15069] #19635 - xml websockets configuration does not mirror annotation configuration [SPR-15068] #19634
- SchedulingConfigurer's ScheduledTaskRegistrar should reliably shut down before TaskScheduler [SPR-15067] #19633
- Backport streamlined ClassPathBeanDefinitionScanner setup [SPR-15061] #19627
- Remove unused Log object from MessageHeaderAccessor [SPR-15045] #19611
- Backward compatibility: initDefaultStrategies() is no longer invoked on subclasses of "MessageListenerAdapter" [SPR-15043] #19609
@Aspect
pointcut declarations do not support dynamically loaded classes [SPR-15040] #19606- Reactor2StompTcpClient should use a shared EventLoopGroup [SPR-15035] #19601
- Consistent autowiring behavior for specifically typed injection points against loosely typed
@Bean
methods [SPR-14960] #19527 - ContentCachingRequestWrapper can have maxContentLength to limit caching [SPR-14829] #19395
- ScheduledAnnotationBeanPostProcessor should reliably apply after AnnotationAwareAspectJAutoProxyCreator [SPR-14692] #19256
- Classes with abstract
@Lookup
methods not registered in case of classpath scanning [SPR-14550] #19118 - Deterministic and JVM-independent
@Bean
registration order within Class-reflected configuration classes [SPR-14505] #19074 - Allow configuring the message converter in HttpPutFormContentFilter [SPR-14503] #19072
- getBeanNamesForType(ResolvableType) does not reliably work for beans with AOP proxies [SPR-14097] #18669
🪲 Bug Fixes
- InvocableHandlerMethod should call GenericTypeResolver with getBeanType() and only once [SPR-15186] #19752
- HiddenHttpMethodFilter may disturb error rendering when handling malformed multipart request [SPR-15179] #19745
- Collection autowiring does not resolve field-level type variable against containing class [SPR-15160] #19726
- HeaderMethodArgumentResolver doesn't resolve Optional.empty() for non-existing header [SPR-15151] #19717
- SimpleApplicationEventMulticaster should not rely on ClassCastException having a message [SPR-15145] #19711
- Modification in AbstractAutowireCapableBeanFactory to prevent stackoverflow errors causes context not to load. [SPR-15125] #19692
- Incorrect resolution of ResolvableAttributes when MessageSourceSupport#alwaysUseMessageFormat is true [SPR-15123] #19690
- Can't autowire BiMap: container resolves non-matching Map of value beans [SPR-15117] #19684
- DefaultRedirectStrategy.sendRedirect with relative URL and ForwardedHeaderFilter add contextpath to URL twice [SPR-15088] #19654
- Spring validation crashes with Hibernate Validation 5 style list constraint violations [SPR-15082] #19648
- Annotated method argument matching performance issue [SPR-15060] #19626
- AutoProxyRegistrar throws NullPointer on
@kotlin
.Metadata Annotation [SPR-15055] #19621 - Regression with poolTargetSource and scoped proxy [SPR-15042] #19608
- Constant error 416 for a byte-range request with content type application/octet-stream [SPR-15041] #19607
- ConcurrentModificationException in AbstractRequestExpectationManager [SPR-15029] #19596
- LinkedCaseInsensitiveMap does not properly support Java 8's merge() and compute() methods [SPR-15026] #19593
- Injecting bean in configurable class using load-time weaving broken when referenced on scoped-proxy class [SPR-14892] #19458
📔 Documentation
5.0 M4 Release
⭐ New Features
- Kotlin extension for RestTemplate [SPR-15056] #19622
- Kotlin extension for Web function API [SPR-15054] #19620
- Kotlin extension for GenericApplicationContext with registerBean(KClass) variants [SPR-15048] #19614
- Provide a way to specify hints in the functional web API [SPR-15030] #19597
- Support
@Nullable
annotations as indicators for optional injection points [SPR-15028] #19595 - Add HttpHeaders getter and setter for Accept-Language [SPR-15024] #19591
- Provide a RequestDataValueProcessor (or equivalent) mechanism in Spring Web Reactive [SPR-15001] #19568
- Support for "request parameters" (query string + form data) in ServerWebExchange [SPR-15000] #19567
- Provide computeIfAbsent-like method on ObjectProvider [SPR-14980] #19546
- Make it easier to use WebFilter with Functional Web Framework [SPR-14979] #19545
- Add status code check to bodyTo[Mono|Flux] [SPR-14977] #19543
- Make signature of ReactiveHttpOutputMessage#writeAndFlushWith(...) more flexible [SPR-14952] #19519
- Support Kotlin nullable information for
@Autowired
and@Inject
[SPR-14951] #19518 - Buffering of output in Spring Web Reactive with Netty too aggressive [SPR-14943] #19510
- Support getting/writing the body as Flux in WebClient [SPR-14918] #19485
- Allow serving static files from a directory to the functional web framework [SPR-14913] #19480
- Automatically set the right content type in BodyInserters#fromResource() [SPR-14905] #19471
- ReactiveAdapter.Descriptor should have a more descriptive way of creating instances of it [SPR-14902] #19468
- Allow HTTP status exceptions to be easily thrown from Controllers [SPR-14895] #19461
- TaskScheduler interface should support java.time.Instant/Duration [SPR-14875] #19441
- Allow HandlerFunction to return a Mono [SPR-14870] #19436
- Add a functional way to register a bean [SPR-14832] #19398
- Align ISO timezone parsing in DateFormatter with Joda-Time / JSR-310 [SPR-14675] #19239
- Cache ASM metadata at the context level [SPR-14654] #19219
- Reactive WebClient SSE extractors [SPR-14539] #19107
- Add HttpHeaders getter and setter for Content-Language [SPR-14536] #19105
- Reactive HTTP response based RedirectView [SPR-14534] #19103
- Reactive equivalent for RequestContext and BindStatus [SPR-14533] #19102
- Reactive response URL-rewriting mechanism [SPR-14529] #19098
- Reactive WebSocket adapter layer [SPR-14527] #19096
- Support Kotlin nullable information in Spring MVC parameters [SPR-14165] #18737
🪲 Bug Fixes
- JsonObjectDecoder throws ArrayIndexOutOfBoundsException: -1 with valid input [SPR-15013] #19580
- Exception accessing static resources in Spring Web Reactive with Netty [SPR-14975] #19541
- NPE is thrown while writing the response [SPR-14941] #19508
- Make andRoute() a drop-in replacement for and(route()) [SPR-14904] #19470
- CssLinkResourceTransformer should not transform gzipped CSS files [SPR-14773] #19339
4.3.5 Release
⭐ New Features
- ForwardedHeaderFilter should support sendRedirect [SPR-15020] #19587
- JdbcTemplate should consistently delegate to getColumnMapRowMapper [SPR-15018] #19585
- LocaleContextHolder default value should be customizable [SPR-15017] #19584
- OkHttpClientHttpRequestFactory should allow POST requests without body [SPR-15015] #19582
- getBeanNamesForType(ResolvableType) doesn't match generic factory method return type for yet-to-be-created bean [SPR-15011] #19578
- Scoped EntityManager bean cannot get unwrapped to Session (with Hibernate 5.2) [SPR-15010] #19577
- Cannot customize autoGrowCollectionLimit on
@InitBinder
method when set custom MessageCodesResolver to Spring MVC [SPR-15009] #19576 - Support for java.util.Optional as a
@RequestBody
[SPR-15007] #19574 - Provide a way to unregister a DataSource in SQLErrorCodesFactory [SPR-15006] #19573
- Spring should tolerate zero-argument constructors with javax.inject.Inject [SPR-15005] #19572
- Add request matchers for query parameters in MockRestRequestMatchers [SPR-14995] #19561
- Update JdbcUtils to improve enum support [SPR-14990] #19556
@GetMapping
method annotation uses consumes attribute from@RequestMapping
class annotation [SPR-14988] #19554- MimeTypeUtils.parseMimeType should ignore an inner ";" inside a quoted value [SPR-14986] #19552
- HttpInvokerClientInterceptor should not wrap client-side Error as RemoteAccessException [SPR-14985] #19551
@DateTimeFormat
(iso = ISO.DATE_TIME) should use optimized formatter for LocalDateTime [SPR-14958] #19525- Shared DefaultConversionService instance e.g. for BeanPropertyRowMapper [SPR-14948] #19515
- Normalize resource URL in ResourceServlet [SPR-14946] #19513
- Include expression string in SpelParseException [SPR-14942] #19509
- Support for Jetty 9.4 (and 9.3.15+) [SPR-14940] #19507
- ResponseEntity builders should allow casting an empty body to any type [SPR-14939] #19506
- Allow PayloadArgumentResolver to only apply to
@Payload
annotated parameters [SPR-14937] #19504 - PathMatchingResourcePatternResolver finds duplicate resources for executable jars but not for executable wars [SPR-14936] #19503
- Implement allocation-friendly method to get user count in SimpUserRegistry [SPR-14930] #19497
- ResourceUrlEncodingFilter, ResourceUrlProvider should correctly resolve hash'ed resource paths [SPR-14928] #19495
- Improve performance for conversions using a method parameter based type descriptor with annotations [SPR-14926] #19493
- DefaultListableBeanFactory.copyConfigurationFrom should provide independent AutowireCandidateResolver instance [SPR-14921] #19488
- HtmlUnitRequestBuilder ignores form encoding type [SPR-14916] #19483
- Improve performance of STOMP message header encoding [SPR-14901] #19467
- BeanPropertyRowMapper should be able to convert SQL timestamp to java.time.LocalDate/LocalTime [SPR-14898] #19464
- getBeanDefinitionNames should not leak the frozenBeanDefinitionNames array [SPR-14897] #19463
- Detect invalid configuration for autoGrowCollectionLimit on DataBinder [SPR-14888] #19454
- Use String.intern() for Class reading [SPR-14886] #19452
- Add PATCH HTTP operation to RestTemplate [SPR-14857] #19423
- Spring WebSockets should support token-based authentication [SPR-14690] #19254
- Add RedirectAttributesMethodArgumentResolver to the default argument resolvers in ExceptionHandlerExceptionResolver [SPR-14651] #19217
- CommonsMultipartFile.getOriginalFilename() should be able to preserve header-specified filename as-is [SPR-14613] #19180
🪲 Bug Fixes
- MBeanExporter fails against null beans [SPR-15031] #19598
- Pointcut evaluation fails against AbstractHandlerMethodMapping$MappingRegistry with AspectJ 1.8.10 [SPR-15019] #19586
- Behaviour of field injection for List dependencies that are produced and consumed by the same configuration class has changed in 4.3.5 snapshots [SPR-14996] #19563
- Concurrency problem in DeferredResult: potential double execution of handleResult [SPR-14978] #19544
- ImportAware.setImportMetadata not invoked if import inherited from superclass with negative condition [SPR-14972] #19538
- List-to-String conversion exception does not refer to element type [SPR-14971] #19537
- Self reference fallback in 4.3 is not meant to apply to collection elements [SPR-14965] #19532
- PathMatchingResourcePatternResolver provides duplicate resources with relative URL [SPR-14934] #19501
- NPE in LoadTimeWeavingConfiguration: loadTimeWeaver() called too early [SPR-14931] #19498
- ConversionService performance regression [SPR-14929] #19496
- AbstractSockJsSession deadlock when tomcat WsSession is closing [SPR-14917] #19484
- ExceptionHandlerExceptionResolver should not log propagated exceptions at warn level [SPR-14907] #19473
- sse breaks with indenting serializer [SPR-14899] #19465
- Content-based versions are not inserted into resource URLs in an error page [SPR-14891] #19457
- Netty4ClientHttpRequestFactory should use SSL if port is 443 or scheme is https [SPR-14889] #19455
- RestTemplate POST and PUT don't work with Netty4ClientHttpRequestFactory [SPR-14860] #19426
📔 Documentation
- SpEL and Date Literals [SPR-14987] #19553
4.2.9 Release
⭐ New Features
- Default async timeout handling results in Logged Exception for Tomcat 8.5.x [SPR-14739] #19305
- Improve performance of StompEncoder.encode() [SPR-14747] #19313
- StompSubProtocolHandler makes the same assumption about header accessor as SimpleBrokerMessageHandler used to [SPR-14791] #19357
- Normalize resource URL in ResourceServlet [SPR-14946] #19513
🪲 Bug Fixes
- ObjectToObjectConverter should be able to use constructors on non-public classes [SPR-14304] #18876
- Async advisor retrieval blocks when triggered by singleton init method [SPR-14324] #18896
- IPv6 + Origin header + X-Forwarded-Host header gives NumberFormatException (Safari10 / CORS) [SPR-14761] #19327
- SockJs heartbeat causes deadlock with XHR polling [SPR-14833] #19399
- SimpleApplicationEventMulticaster should not generally suppress ClassCastException [SPR-14846] #19412
- NPE PropertyOrFieldReference$AccessorLValue due to concurrency issue [SPR-14850] #19416
- AbstractSockJsSession deadlock when tomcat WsSession is closing [SPR-14917] #19484
- List-to-String conversion exception does not refer to element type [SPR-14971] #19537
- ImportAware.setImportMetadata not invoked if import inherited from superclass with negative condition [SPR-14972] #19538
- Concurrency problem in DeferredResult: potential double execution of handleResult [SPR-14978] #19544
- Pointcut evaluation fails against AbstractHandlerMethodMapping$MappingRegistry with AspectJ 1.8.10 [SPR-15019] #19586
- MBeanExporter fails against null beans [SPR-15031] #19598
📔 Documentation
3.2.18 Release
⭐ New Features
- Allow method inlining of ObjectUtils.nullSafeEquals() [SPR-14349] #18921
- Normalize resource URL in ResourceServlet [SPR-14946] #19513
- ModelAndViewResolver still refers to raw Class type [SPR-7860] #12517
🪲 Bug Fixes
- Constructor sets the source incorrectly in org.springframework.beans.PropertyValue [SPR-8337] #12985
- ObjectToObjectConverter should be able to use constructors on non-public classes [SPR-14304] #18876
- Async advisor retrieval blocks when triggered by singleton init method [SPR-14324] #18896
- Deadlock while creating a new thread on bean initialization with transactional code invocation [SPR-14388] #18961
- CronSequenceGenerator causes StackOverflowError with reversed range values [SPR-14462] #19031
- Ineffective synchronization in StandardTypeConverter constructor [SPR-14465] #19034
- ResourcePatternUtils.getResourcePatternResolver does not accept null arg [SPR-14500] #19069
- LinkedCaseInsensitiveMap doesn't override HashMap.clone() [SPR-14509] #19078
- StackOverflowError for advisor search against factory-bean reference to FactoryBean [SPR-14551] #19119
- StringUtils.parseLocaleString(): does not parse locale string in java 7 for Serbian (Latin) [SPR-14718] #19283
- Concurrency problem in DeferredResult: potential double execution of handleResult [SPR-14978] #19544
- MBeanExporter fails against null beans [SPR-15031] #19598
📔 Documentation
5.0 M3 Release
⭐ New Features
- Consider making MessageChannel a
@FunctionalInterface
[SPR-14854] #19420 - Improve WebClient error handling [SPR-14852] #19418
- Add support for RxJava 2 Maybe type [SPR-14843] #19409
- ApplicationContext-based initialization of reactive WebFilter, WebHandler, WebExceptionHandler infrastructure [SPR-14837] #19403
- Support
@ResponseStatus
on reactive controller methods [SPR-14830] #19396 - Do not use Jackson2JsonEncoder for byte array [SPR-14825] #19391
- Remove not existing NativeJdbcExtractors from documentation [SPR-14810] #19376
- Add support for URI templates in redirectedUrl() & forwardedUrl() [SPR-14790] #19356
- Remove
@Inherited
from@Primary
[SPR-14780] #19346 - Only print printable content for request and response body in Spring MVC Test [SPR-14776] #19342
- Add
@EnableWebReactive
and WebReactiveConfigurerAdapter configuration model [SPR-14754] #19320 - Close resources in WebClient and ClientHttpConnector [SPR-14750] #19316
- Add support for context paths in Spring Web Reactive [SPR-14726] #19291
- Print request body in PrintingResultHandler in Spring MVC Test [SPR-14717] #19282
- Add way to obtain Principal from ServerWebExchange [SPR-14680] #19244
- Support
@EnabledIf
and@DisabledIf
without loading ApplicationContext [SPR-14649] #19215 - Reactive HTTP request CORS Support [SPR-14545] #19113
- Reactive HTTP request
@InitBinder
support [SPR-14543] #19111 - Reactive HTTP request
@ModelAttribute
support [SPR-14542] #19110 - Reactive HTTP request data binding [SPR-14541] #19109
- Reactive HttpMessageReader/Writer for "x-www-form-url-encoded" data [SPR-14540] #19108
- Introduce HttpHeaders getContentDisposition() and setContentDisposition() [SPR-14408] #18979
🪲 Bug Fixes
- Returning Mono<ResponseEntity<?>> causes NPE [SPR-14877] #19443
- Wrong HandlerResultHandler select when dealing with exceptions [SPR-14876] #19442
- [spring-web-reactive] NPE in RequestMappingHandlerAdapter at Startup [SPR-14869] #19435
- JsonObjectDecoder fails to decode some splitted source [SPR-14859] #19425
- Fix HttpRequest#getURI() with Netty based engines [SPR-14794] #19360
- Flux looses messages when using a Processor from another Thread [SPR-14772] #19338
- Error while serializing ServerSentEvent [SPR-14748] #19314
- CssLinkResourceTransformer is incompatible with ContentVersionStrategy when using Caching [SPR-14597] #19166
📔 Documentation
4.3.4 Release
⭐ New Features
- Improve exception when failing to create a specific bean due to a NoClassDefFoundError [SPR-14883] #19449
- ApplicationListenerDetector should ignore non-managed bean instances [SPR-14879] #19445
- Sockjs XHR Fallback on already existing WebSocketServerSockJsSession [SPR-14867] #19433
- Use String.intern() for Annotation and Class scanning [SPR-14862] #19428
- Log exception from
@ExceptionHandler
at higher level than debug [SPR-14861] #19427 - Possibility to use org.springframework.cache.support.NoOpCacheManager.NoOpCache as public class as NoOpCacheManager [SPR-14856] #19422
- TransactionStatus.flush() should trigger TransactionSynchronization.flush() when using DataSourceTransactionManager [SPR-14847] #19413
- Make HttpComponentsAsyncClientHttpRequest abortable [SPR-14845] #19411
- AnnotationFormatterFactory should support
@AliasFor
[SPR-14844] #19410 - Type information not available on NoSuchBeanDefinitionException for collections [SPR-14831] #19397
- ResolvableType equals method should not consider TypeProvider source [SPR-14826] #19392
- GenericConversionService.addConverter should be able to determine generic types from target class behind proxy [SPR-14822] #19388
- Allow type produced by ScopedProxyFactoryBean to be determined before singleton is created [SPR-14816] #19382
- Hibernate 5 LocalSessionFactoryBean should allow for dynamic mapping registration (like for Hibernate 4) [SPR-14815] #19381
- IllegalArgumentException: HttpEntity parameter 'null' [SPR-14799] #19365
- Better encapsulate and Javadoc CORS configuration defaults [SPR-14798] #19364
- StompSubProtocolHandler makes the same assumption about header accessor as SimpleBrokerMessageHandler used to [SPR-14791] #19357
- Inner bean behind BeanFactoryPostProcessor should be able to receive application events [SPR-14783] #19349
- Reduce String allocations in TransactionAspectSupport.methodIdentification() [SPR-14760] #19326
- Improve performance of StompEncoder.encode() [SPR-14747] #19313
- Netty4ClientHttpRequestFactory should configure a default SslContext [SPR-14744] #19310
- Default async timeout handling results in Logged Exception for Tomcat 8.5.x [SPR-14739] #19305
- YAML + PropertyPlaceholderConfigurer needs to process non-String values as well [SPR-14737] #19303
- Method getMergedProperties in ReloadableResourceBundleMessageSource does not set fileTimestamp [SPR-14583] #19152
- Allow customization of TestDispatcherServlet when using
@MockMvcTest
[SPR-14277] #18849 - context:property-placeholder should accept comma-separated list as placeholder value for its location attribute [SPR-10502] #15135
- BindingResult should not hold on to ConversionService when serialized in session [SPR-8282] #12930
🪲 Bug Fixes
- NoSuchMethodError when using AnnotatedElementAdapter with Java 7 [SPR-14872] #19438
- SpEL: Compiled OpNE should favor equals() to != [SPR-14863] #19429
- Allow
@Cacheable
method to return java.util.Optional variant of cached value with@Cacheable
(sync=true) [SPR-14853] #19419 - ResourceHttpRequestHandler no longer works as prototype bean [SPR-14851] #19417
- NPE PropertyOrFieldReference$AccessorLValue due to concurrency issue [SPR-14850] #19416
- LiveBeansView#unregister should not rely on ApplicationContext#getApplicationName [SPR-14848] #19414
- SimpleApplicationEventMulticaster should not generally suppress ClassCastException [SPR-14846] #19412
- SockJs heartbeat causes deadlock with XHR polling [SPR-14833] #19399
- Cache annotation lookup in 4.3 finds more annotations than in 4.2 [SPR-14801] #19367
- ModelAndView's setStatus does not work for
@ExceptionHandler
methods [SPR-14796] #19362 - Access-Control-Allow-Methods contains duplicate HTTP methods [SPR-14792] #19358
@CacheConfig
(cacheNames) broken when used on interface [SPR-14781] #19347- SpringValidatorAdapter's ResolvableAttribute is not serializable [SPR-14778] #19344
- ETag header is removed from PUT/POST/PATCH responses [SPR-14767] #19333
- IPv6 + Origin header + X-Forwarded-Host header gives NumberFormatException (Safari10 / CORS) [SPR-14761] #19327
- DefaultPersistenceUnitManager may configure a persistence unit root URL that does not point to a file or directory [SPR-14749] #19315
- Async advisor retrieval blocks when triggered by singleton init method [SPR-14324] #18896
- ObjectToObjectConverter should be able to use constructors on non-public classes [SPR-14304] #18876
📔 Documentation
- Document supported return types for
@Async
methods [SPR-14881] #19447 - The contract for StringValueResolver.resolveStringValue should be more explicit [SPR-14842] #19408
- Bad Table Rendering in Default Exception Handling Documentation [SPR-14782] #19348
@lookup
method injection method documentation [SPR-14765] #19331
5.0 M2 Release
⭐ New Features
- Improve error handling in reactive SSE support when the remote channel is closed [SPR-14538] #22189
- Add WebApplicationInitializers for Web Reactive [SPR-14713] #19278
- Consider to make ApplicationEventPublisher as
@FunctionalInterface
[SPR-14699] #19263 - Expose Channel on Resource [SPR-14698] #19262
- Provide annotated controller hints to codecs and JsonView support [SPR-14693] #19257
- Change default file extension in AppCacheManifestTransformer [SPR-14687] #19251
- Add HttpBasic ClientWebRequestPostProcessor [SPR-14682] #19246
- Add ResourceRegionHttpMessageWriter [SPR-14664] #19228
- Add ServerWebExchange argument resolver [SPR-14658] #19223
- Introduce support for enabling JUnit Jupiter tests with SpEL expressions [SPR-14644] #19210
- Support for RxJava 2 [SPR-14628] #19195
- Introduce support for disabling JUnit Jupiter tests with SpEL expressions [SPR-14614] #19181
- Missing String return type from reactive
@Controller
doc at Ref Manual [SPR-14565] #19134 - Reactive HTTP request "check not modified" support [SPR-14522] #19091
- Reactive static resource handler [SPR-14521] #19090
- HTML5 Application Cache Manifest not served with Content-Type "text/cache-manifest" [SPR-14510] #19079
- ClientHttpRequestInterceptor for WebClient [SPR-14502] #19071
- Add Smile and CBOR Jackson data formats support [SPR-14435] #19006
- Reactive request and response "mocks" [SPR-14421] #18992
- Allow Resources resolved through the resource chain to update the response [SPR-14264] #18836
- Support nested test classes with SpringClassRule & SpringMethodRule [SPR-14150] #18722
- Update RestTemplate to respect
@Order
for ClientHttpRequestInterceptor [SPR-13971] #18543 - HttpMessageConverterExtractor should wrap HttpMessageNotReadableException in RestClientExceptions [SPR-13592] #18170
- Align existing checkNotModified support in Spring MVC with same on the reactive side [SPR-14659] #18168
- New controller for Spring MVC using Lambda [SPR-12954] #17546
- Spring-specific index file for component candidate classes [SPR-11890] #16509
- Allow to specify bean qualifier in an AOP
@Around
/@Before
/ ... [SPR-11217] #15842 - Allow for concurrent test execution in the TestContext framework [SPR-5863] #10532
🪲 Bug Fixes
- Exception during initialisaton of resource handling at WebReactiveConfiguration [SPR-14735] #19301
- Reactive path matching does not consider servlet context path [SPR-14714] #19279
- Handle ResponseEntity with null bodies [SPR-14663] #19227
- Inconsistent handling of ResponseStatusExceptions [SPR-14618] #19185
- ReactorHttpClientConnector ignores SSL support [SPR-14593] #19162
- Encoding of flux data is incorrect [SPR-14586] #19155
- NoSuchElementException when receiving a HTTP 401 with WebClient [SPR-14582] #19151
- Let users control reactive SSE stream completion [SPR-14578] #19147
- Reactive controller methods annotated with
@PathVariable
aren't invoked [SPR-14553] #19121
4.3.3 Release
⭐ New Features
- ScriptTemplateView should check template resource [SPR-14729] #19294
- Introduce 'value' alias for
@Bean
's 'name' attribute [SPR-14728] #19293 - Add SPI to customize the qualifiers to use for a particular bean [SPR-14725] #19290
- Don't log property values in PropertySourcesPropertyResolver by default [SPR-14709] #19274
- AbstractPollingMessageListenerContainer's workaround for Tibco causes performance delays during ems failover [SPR-14697] #19261
- Consistent *Aware callbacks for TypeFilters, ImportSelectors and ImportBeanDefinitionRegistrars [SPR-14686] #19250
- ConfigurationClassParser does not use ApplicationContext's ResourceLoader for its MetadataReaderFactory [SPR-14684] #19248
- Better Exception Message for JMS Jackson Converter Error [SPR-14672] #19236
- Default async request timeout handling does not work with Jetty 9.x [SPR-14669] #19233
- Allow
@PathVariable
to be optional [SPR-14646] #19212 - Optimize ordered event listener performance [SPR-14642] #19208
- CommonsMultipartResolver should explicitly convert FileSizeLimitExceededException next to SizeLimitExceededException [SPR-14638] #19204
- Improve performance of StompCommand.getMessageType() [SPR-14636] #19203
- Consistent comma splitting without regex overhead (e.g. in MediaType/MimeType) [SPR-14635] #19202
- ListBeansView should also expose aliases [SPR-14632] #19199
- Protect against getParameterType cursor leak with Oracle 12c JDBC driver [SPR-14629] #19196
- GenericApplicationContext should pick up ClassLoader from custom ResourceLoader [SPR-14626] #19193
- Improve performance of assertion in StompSubProtocolHandler [SPR-14624] #19191
- Avoid creation of lazy candidates when the primary bean is injected [SPR-14611] #19178
- Allow specifying CompilationCustomizer for Groovy based beans [SPR-14585] #19154
- Allow programmatic registration of bean definitions with a ResolvableType [SPR-14580] #19149
- Avoid repeated getParameterType calls for setNull with Oracle 12c driver [SPR-14574] #19143
- MockClientHttpResponse should close stream [SPR-14563] #19132
- HttpEntityMethodProcessor should not throw IllegalArgumentExceptions for invalid If-None-Match headers [SPR-14559] #19127
- PathEditor returns wrong result for absolute path in servletContext.getRealPath(...) [SPR-14549] #19117
- HttpHeaders.setContentDispositionFormData() doesn't encode non-acsii characters correctly [SPR-14547] #19115
- MockMvcResultMatchers.jsonPath(String).value() should have a matching method to declare the expected type [SPR-14498] #19067
- findDefaultEntityManagerFactory should consider EMF bean's primary flag [SPR-7549] #12206
🪲 Bug Fixes
- exception during websocket client close [SPR-14721] #19286
- StringUtils.parseLocaleString(): does not parse locale string in java 7 for Serbian (Latin) [SPR-14718] #19283
- NPE during websocket disconnect [SPR-14703] #19268
- HibernateExceptionTranslator translating to InvalidDataAccessApiUsageException when using vanilla Hibernate [SPR-14681] #19245
- Spring 4.3.2 HibernateTemplate#findByNamedQuery isn't compatible with Hibernate 5.0 [SPR-14676] #19240
- Performance regression when scheduling is enabled and context contains URL beans [SPR-14666] #19230
- TypeConverterSupport does not propagate custom exceptions anymore [SPR-14661] #19225
- ResolvableType for a raw type is not assignable to generic types of the same class [SPR-14648] #19214
- Fix assertions in StompHeaderAccessor [SPR-14625] #19192
- Missing MessageMethodArgumentResolver default constructor [SPR-14616] #19183
- Transaction manager cache fails to repopulate when multiple transaction managers defined [SPR-14609] #19177
- OutOfMemoryError caused by nested UnsatisfiedDependencyExceptions [SPR-14607] #19175
WebMvcConfigurer#extendHandlerExceptionResolvers
is not invoked [SPR-14599] #19168- NoSuchBeanDefinitionException message shows internal array class names [SPR-14595] #19164
- Improve documentation for Cacheable#result (re: Optional wrapper) [SPR-14587] #19156
- HtmlUnitRequestBuilder corrupts the parent RequestBuilder [SPR-14584] #19153
- When favorPathExtension is false ResourceHttpRequestHandler serves resources with different content type in 4.3 compared to 4.2 [SPR-14577] #19146
- StompSubProtocolHandler responds with ERROR (Session closed.) on DISCONNECT when using SimpleBrokerMessageHandler [SPR-14568] #19137
- SockJS heartbeat is causing application send Message to fail similar to (SPR-14356) [SPR-14564] #19133
- ArrayIndexOutOfBoundsException in MethodBasedEvaluationContext [SPR-14554] #19122
- StackOverflowError for advisor search against factory-bean reference to FactoryBean [SPR-14551] #19119
- Default connection release mode inconsistent with Hibernate 5.1.1 [SPR-14548] #19116
- StackOverflowError at AbstractJackson2HttpMessageConverter.resolveVariable [SPR-14520] #19089
- Regression: Insert statement fails with inconsistent datatypes on Oracle 12c driver [SPR-14191] #18764
- Constructor sets the source incorrectly in org.springframework.beans.PropertyValue [SPR-8337] #12985