Spring v5.2.5.RELEASE Release Notes

Release Date: 2020-03-24 // 8 days ago
  • 🍱 ⭐️ New Features

    • Do not cache multipart mime types in MimeTypeUtils LRU cache #24767
    • Declare proxyBeanMethods=false in JmsBootstrapConfiguration #24752
    • 👍 Usage of java 14 record throws java.lang.UnsupportedOperationException: This feature requires ASM8_EXPERIMENTAL #24722
    • Non-public Kotlin beans can't be instantiated #24712
    • Avoid ClassCastException for CoyoteInputStream in TomcatHttpHandlerAdapter #24707
    • Avoid unnecessary sorting in AbstractHandlerMethodMapping #24704
    • 👌 Improve performance of StringUtils#cleanPath #24674
    • ⚡️ Optimize global advisor registration in ProxyFactoryBean #24669
    • Short circuit check in SynthesizedMergedAnnotationInvocationHandler.isVisible() #24664
    • Ignore empty domain string in ResponseCookie #24663
    • ✂ Remove UTF-8 charset parameter from Content-Type in SseEmitter #24632
    • 👻 Jaxb2XmlDecoder Does Not Throw Codec Exception For Invalid XML #24622
    • TransactionInterceptor constructors should accept a generic TransactionManager #24612
    • 0️⃣ Relax GraalVM checks in DefaultParameterNameDiscoverer #24600
    • 👍 Multipart/related support in Spring Webclient #24582
    • 👍 Consider supporting PreFlight requests and CORS in Servlet Functional Endpoints #24564
    • 👌 Support for byte-range requests in Servlet Functional endpoints #24562
    • 🔧 Provide a mechanism to configure integration tests with a dynamic property source #24540
    • 👌 Improve ConcurrentLruCache performance #24469
    • ⬇️ Reduce Class[] garbage when creating proxies #24221
    • implements checkNotModified for ServerRequest #24173
    • 👻 AbstractSockJsSession exception when handling message with closed session #23828

    🍱 🐞 Bug Fixes

    • 📦 Missing nullability declarations for package web.socket.server.jetty #24745
    • 👀 MediaTypeNotSupportedStatusException seems unused #24743
    • 🚀 MessagingRSocket incorrectly tries to release entire input stream on channel interaction #24741
    • 🐎 MimeTypeUtils performance degradation #24671
    • 📇 RSocket MetadataEncoder expands the routes incorrect #24656
    • Spring generates huge callstack for async requests #24652
    • CodecException (from JSON conversion) in RestController is not mapped to 400 but 500 (SB 2.2.5 & Kotlin) #24646
    • ➕ addCandidateComponentsFromIndex should create ScannedGenericBeanDefinitions #24638
    • ShallowETagHeaderFilter (still) overwrites ETag and Content-Length #24635
    • Invalid JSON in requests now causes 500 instead of 400 #24630
    • Invalid request results in 500 INTERNAL ERROR instead of 400 BAD REQUEST (with Lombok and Kotlin) #24610
    • 🚀 Distributions no longer deployed #24605
    • UnknownHttpStatusCodeException is missing the response body #24595
    • Implementing interface in abstract class does not expose parameter annotations #24127

    📔 Documentation

    • Clarify name generation responsibility for PropertySourceFactory implementations #24757
    • 👌 Improve Javadoc in @Configuration #24753
    • 👌 Improve Javadoc in AnnotatedElementUtils #24740
    • Clarify behavior for WebClient statusHandlers #24736
    • ✨ Enhance Spring Core documentation, section 1.9.2. Using @Autowired #24711
    • 0️⃣ Do not mention credentials as enabled by default in CorsRegistry #24691
    • 👌 Improve Javadoc in AutoProxyRegistrar #24688
    • 👌 Improve javadoc in RollbackRuleAttribute regarding nested classes #24682
    • 🛠 Fix typo in testing.adoc #24627
    • 💅 Polish ReactorResourceFactory #24620
    • 🛠 Fix typo in reference manual #24597
    • ➕ Add more lambda expressions in data-access code examples #24398

    ⬆️ 🔨 Dependency Upgrades

    • ⬆️ Upgrade to JUnit 5.6.1 #24762
    • ⬆️ Upgrade to Reactor Dysprosium SR6 #24725
    • ⬆️ Upgrade to Groovy 2.5.10 (for JDK 14 compatibility) #24719

    🍱 ❤️ Contributors

    🚀 We'd like to thank all the contributors who worked on this release!


Previous changes from v5.2.4.RELEASE

  • 🍱 ⭐️ New Features

    • BlockHoundIntegration for spring-core #24581
    • 🔧 Configure quiet period for shutting down Netty resources #24538
    • 🔧 Consistent ROLE_INFRASTRUCTURE declarations for internal configuration classes #24509
    • 🌲 Raise log level for exceptions from EntityManager close call #24501
    • 👍 ExecutorConfigurationSupport to allow millisecond precision for await termination period #24496
    • 👌 Improve assertion message in PersistenceExceptionTranslationInterceptor #24484
    • BigDecimal in multi-value request body deserializes differently than single-value #24479
    • If controller method has produces="/" in 5.2.3 response is 500 instead of 406 #24466
    • 👀 SseEmitter cannot format text/plain if StringHttpMessageConverter is not configured #24465
    • 👌 Support command line arguments with an empty value #24464
    • AbstractJackson2HttpMessageConverter + Jackson 2.10: handle ValueInstantiationException properly #24455
    • Compatibility with JDK 14 #24453
    • Avoid opaque to hierarchical reset in UriComponentsBuilder when input is null #24444
    • ➕ Add Informix to supported database products for procedure calls #24443
    • 🔒 Solve ReflectPermission issue in sandbox security policy model for repackaged CGLIB ReflectUtils #24420
    • 👍 Allow non-standard HttpStatus in reactive ServerHttpResponse #24400
    • 👍 Allow customizing default Smile codec via CodecConfigurer #24382
    • Simplify getCache() method in CaffeineCacheManager #24376
    • 🔦 Expose property for handling of Ping frames with Reactor Netty WebSocket client and server #24367
    • 📜 Simplify getParsedSql() method in NamedParameterJdbcTemplate #24358
    • Provide control over formatting of request in HttpWebHandlerAdapter #24352
    • ➕ Add hook-point to exclude imported configuration classes #24175
    • 0️⃣ Jackson2Decoder fails to determine correct target type from default interface method with a generic type #23791
    • Extra empty line a["\n"] messages from ActiveMQ STOMP broker #23713
    • ➕ Add a way to combine more than one AnnotationIntrospector in Jackson2ObjectMapperBuilder instead of overriding it #22830
    • ➕ Add unique number to WebFlux log prefix for Reactor Netty server #22039

    🍱 🐞 Bug Fixes

    • 🤡 NullPointerException in MockHttpServletRequestBuilder for URI string with no protocol #24556
    • ⚠ BeanPostProcessorChecker warning due to missing infrastructure role on ProxyTransactionManagementConfiguration #24508
    • spring-aspects has a compile dependency on spring-orm #24491
    • 📜 AbstractJackson2Decoder is not aware of jackson's non-blocking parser only supporting UTF-8 #24489
    • 🤡 MockRestServiceServer reset does not clear failedRequests #24486
    • 📇 Prevent unnecessary refresh for InjectionMetadata.EMPTY #24485
    • ⬆️ "Status and headers already sent" ISE exception from Reactor Netty on WebSocket upgrade #24475
    • The new Encoder.encodeValue and Decoder.decode methods in spring 5.2 do not provide access to the Context #24441
    • 🌲 Cycle in LogAdapter.Log4jLog initialization within log appender #24440
    • Negative byte values not properly converted to unsigned int in URI encoding #24413
    • ServerSentEventHttpMessageReader maps null when event has comment only. #24389
    • 👍 Nested annotations no longer supported in ASM-based annotation processing #24375
    • Explicit Content-Type Header in WebClient is overwritten by ResourceHttpMessageWriter #24366
    • Avoid setting special Content-* response headers in TomcatHeadersAdapter #24361
    • IncompatibleClassChangeError encountered on execution of compiled SPEL expressions #24357
    • 📜 JSON decoding error parsing stream encoded with Jackson Smile #24198

    📔 Documentation

    • 👌 Improve documentation for @Autowired/@Value in @Configuration classes #24585
    • 🛠 Fix formatting in webflux-webclient.adoc #24578
    • Clarify AbstractResourceBasedMessageSource.setCacheMillis vs java.util.ResourceBundle #24563
    • 📚 Correct Ant-style Patterns example in documentation #24552
    • 🛠 Fix javadoc in DependencyDescriptor #24551
    • 📚 Correct formatting of MessageSource example in documentation #24531
    • ⚡️ Update advice on RestTemplate #24503
    • 🚀 Upgrade to Spring Asciidoctor Extensions 0.4.0.RELEASE #24481
    • 🛠 Fix typo in StringUtils class #24471
    • 📚 Polish documentation format #24460
    • 🛠 Fix Asciidoctor Warnings #24427
    • Reconsider recommended connection pools #24405
    • 👌 Improve default experience of data binding from HTML date and time input fields #24370
    • 👍 Document supported characters for identifiers in SpEL expressions #24359
    • Document that @Validated results in the use of a proxy and warn users about the side-effects #24338
    • 🗄 Deprecate use of path extensions in request mapping and content negotiation #24179

    ⬆️ 🔨 Dependency Upgrades

    • ⬆️ Upgrade to RSocket 1.0.0-RC6 #24482
    • ⬆️ Upgrade to ASM 7.3 #24438
    • ⬆️ Upgrade to Reactor Dysprosium SR5 #24355
    • ⬆️ Upgrade to JUnit Jupiter 5.6 #24299

    🍱 ❤️ Contributors

    🚀 We'd like to thank all the contributors who worked on this release!