Skip to content

Releases: spring-projects/spring-framework

5.0 M5 Release

17 Jan 14:18
Compare
Choose a tag to compare

⭐ 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

17 Jan 14:22
Compare
Choose a tag to compare

⭐ 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

  • Improve the logging documentation [SPR-15170] #19736
  • CookieLocaleResolver maxAge documentation wrong [SPR-15155] #19721

5.0 M4 Release

17 Jan 14:18
Compare
Choose a tag to compare

⭐ 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

17 Jan 14:22
Compare
Choose a tag to compare

⭐ 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

17 Jan 14:22
Compare
Choose a tag to compare

⭐ 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

  • @lookup method injection method documentation [SPR-14765] #19331
  • Document supported return types for @Async methods [SPR-14881] #19447
  • SpEL and Date Literals [SPR-14987] #19553

3.2.18 Release

17 Jan 15:44
Compare
Choose a tag to compare

⭐ 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

  • Ambiguous sentence in the cache documentation [SPR-14399] #18017
  • SpEL and Date Literals [SPR-14987] #19553

5.0 M3 Release

17 Jan 14:18
Compare
Choose a tag to compare

⭐ 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

  • Replace J2EE with Java EE [SPR-14811] #19377
  • Remove OracleLobHandler from documentation [SPR-14809] #19375
  • Reference Documentation: instruct how RestTemplate should handle the errors thrown about @Validated (JSR 303/349) [SPR-14724] #19289

4.3.4 Release

17 Jan 14:22
Compare
Choose a tag to compare

⭐ 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

17 Jan 14:18
Compare
Choose a tag to compare

⭐ 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

17 Jan 14:22
Compare
Choose a tag to compare

⭐ 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

📔 Documentation

  • Update CONTRIBUTING.md to require use of UTF-8 (instead of ISO-8859-1)) [SPR-14674] #19238
  • NoHandlerFoundException is mapped to 404 twice [SPR-14598] #19167
  • @Configuration constructor behaviour documentation differs between Reference Documentation and API docs [SPR-14552] #19120