All Versions
72
Latest Version
Avg Release Cycle
110 days
Latest Release
3 days ago

Changelog History
Page 6

  • v5.1.14.RELEASE Changes

    February 25, 2020

    🍱 ⭐️ New Features

    • 🔧 Consistent ROLE_INFRASTRUCTURE declarations for internal configuration classes #24514
    • 🌲 Raise log level for exceptions from EntityManager close call #24513
    • BigDecimal in multi-value request body deserializes differently than single-value #24487
    • ➕ Add Informix to supported database products for procedure calls #24449
    • 🔒 Solve ReflectPermission issue in sandbox security policy model for repackaged CGLIB ReflectUtils #24448

    🍱 🐞 Bug Fixes

    • 📜 AbstractJackson2Decoder is not aware of jackson's non-blocking parser only supporting UTF-8 #24542
    • 🌲 Cycle in LogAdapter.Log4jLog initialization within log appender #24450
    • 📜 JSON decoding error parsing stream encoded with Jackson Smile #24412
    • Avoid setting special Content-* response headers in TomcatHeadersAdapter #24387
    • IncompatibleClassChangeError encountered on execution of compiled SPEL expressions #24362

    📔 Documentation

    • Clarify AbstractResourceBasedMessageSource.setCacheMillis vs java.util.ResourceBundle #24584
    • ⚡️ Update advice on RestTemplate #24505
    • 📚 Polish documentation format #24462

    ⬆️ 🔨 Dependency Upgrades

    • ⬆️ Upgrade to Reactor Californium SR16 #24527
  • v5.1.13.RELEASE Changes

    January 14, 2020

    🍱 ⭐️ New Features

    • 👌 Support headers with multiple values in ResponseStatusException #24284
    • 🗄 Un-deprecate PathResource (for java.nio.file.Path resolution in createRelative) #24217
    • 👌 Improve configuration API of ClientCodecConfigurer.CustomCodecs #24201
    • ⚡️ Let UriUtils.encode…(…) methods optimize for sources without the need to be encoded #24154
    • 👌 Support variable resolution of wildcard types #24150
    • 📜 ContentDisposition cannot parse encoded filename with leading space #24148

    🍱 🐞 Bug Fixes

    • StringDecoder buffer leak related to maxInMemorySize limit #24346
    • 🏗 Cloning a WebClient.Builder instance does not copy strategiesConfigurers #24330
    • Unsafe double-checked locking in SpelExpression#compileExpression #24306
    • Ensure CORS processing does not add Vary header twice on async requests #24229
    • 🏗 Escape quotes in filename in ContentDisposition.Builder when charset not specified #24224
    • ClassUtils.getInterfaceMethodIfPossible overhead in cached methods for SpEL key/condition expressions #24209
    • ClientCodecConfigurer drops MultipartHttpMessageWriter.partWriters when mutated #24202

    📔 Documentation

    • 📚 WebFlux documentation states incorrectly that BindingResult is supported after @RequestBody #24181
  • v5.1.12.RELEASE Changes

    December 03, 2019

    🍱 ⭐️ New Features

    • 0️⃣ Provide default codecs config callback to custom codecs #24119
    • 👍 Allow ExchangeStrategies customizations in WebClient #24106
    • Cache result of String.getBytes() in ExtendedBeanInfo.PropertyDescriptorComparator #24095
    • IOException "Closed while Pending/Unready" with WebFlux on Jetty #24060
    • Avoid substring allocation in StringUtils.replace #24024
    • 👌 Support for new MySQL 8 error code 3572 #23973
    • WebClient retry() doesn't re-run filters #23909

    🍱 🐞 Bug fixes

    • 📜 NullPointerException in JSON codec parsing stream encoded with Jackson Smile #24076
    • Revise AbstractBeanDefinition equals implementation #24054
    • SqlRowSet accessor methods should be marked @nullable #24044
    • ControllerAdviceBean.findAnnotatedBeans() finds proxies as well as their target beans, resulting in double registration #24018
    • Ensure InstantFormatter can properly deserialize ISO-formatted dates #23993
    • 👍 Allow schemaZip Gradle task to execute on MS Windows #23987
    • Corrupted multipart + correct content-length lead to Flux hanging #23948
    • ShallowETagHeaderFilter overwrites ETag #23941
    • ResponseCookie to allow leading dot in domain name #23928
    • ✅ Regression in spring-test's 5.2.1 MockCookie parse implementation #23920
    • 👉 useSuffixPatternMatch ignored if pathPrefix is also used #23919

    📔 Documentation

    • TypeDescriptor#getElementTypeDescriptor does not throw IllegalStateException anymore #23997
    • 🔧 Different behavior when injecting beans from local @configuration class vs. external @configuration classes #23990
    • 0️⃣ DEFAULT_PHASE of SmartLifecycle interface has incorrect Javadoc #23964
    • Correct Javadoc for WebMvcConfigurer#addInterceptors #23913

    ⬆️ 🔨 Dependency upgrades

    • ⬆️ Upgrade to Reactor Californium-SR14 #24038
  • v5.1.11.RELEASE Changes

    November 02, 2019

    🍱 ⭐️ 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.1.10.RELEASE Changes

    September 28, 2019

    🍱 ⭐️ 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
    • 0️⃣ 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
    • 0️⃣ 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.1.9.RELEASE Changes

    August 02, 2019

    🍱 ⭐️ 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.1.8.RELEASE Changes

    June 13, 2019

    🍱 ⭐️ 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!

  • v5.1.7.RELEASE Changes

    May 09, 2019

    🍱 ⭐️ New Features

    • 👌 Support any HttpEntity implementing ResolvableTypeProvider #22931
    • Early out in PropertyPlaceholderHelper if no placeholder exists #22870
    • 0️⃣ Don't throw an exception in CookieLocaleResolver, fallback to default locale instead #22861
    • Streamline ReactiveAdapterRegistry.getAdapter usage #22842
    • 🌲 Consider logging classcast exceptions caused by lambdas at trace level #22834
    • Ensure flush after StreamingResponseBody #22813
    • ⚡️ Optimize writing with Mono Publisher #22800
    • Disable ShallowEtagHeaderFilter when ETag handled in application #22797
    • 0️⃣ Avoid MessageFormat processing for default @Pattern validation message #22761
    • Avoid SourceClass creation for annotations that are always ignored #22750
    • Avoid expensive assertions in HttpRange #22742
    • Avoid exceptions in ReflectionUtils.isObjectMethod(…) #22730
    • Jackson2Tokenizer ignores USE_BIG_DECIMAL_FOR_FLOATS deserialization feature #22510
    • 0️⃣ StringHttpMessageConverter will add all the default charsets even if Accept-Charset is set explicitly #22506
    • 🛠 Fix CompletableFuture exception handling #22476

    🍱 🐞 Bug Fixes

    • 🛠 Fix EncoderHttpMessageWriter.isStreamingMediaType() #22936
    • Consistent handling of empty List entries in LinkedMultiValueMap #22912
    • 👻 Check if null before accessing exception message in webflux InvocableHandlerMethod#logArgumentErrorIfNecessary #22900
    • 0️⃣ DefaultListableBeanFactory.destroySingleton(s) not thread-safe for manual singletons #22896
    • 🤡 MockHttpServletRequest raises IndexOutOfBoundsException when Accept-Language is not set #22877
    • 🌲 Avoid unguarded String concatenation for debug/trace logging #22874
    • [Regression] 404 without ACCEPT request header results in a 406 in Spring Framework 5.1.6 #22853
    • ResourceUrlEncodingFilter throws StringIndexOutOfBoundsException when %ED%B6 is in the URL path #22851
    • 🤡 MockCookie.parse(String) mishandles case sensitivity #22786
    • WebClient fails to send POST body when ObjectMapper FLUSH_AFTER_WRITE_VALUE is false #22771
    • More leaks related to Mono.just(dataBuffer) or Flux.just(dataBuffer) #22754
    • Jackson2ObjectMapperBuilder prevents the registration of multiple modules with a null typeId #22740
    • ProtobufEncoder and ProtobufDecoder buffer leaks #22731
    • o.s.h.server.reactive.ChannelSendOperator may leak the memory on cancel/error #22720
    • EL1072E when evaluating compiled comparison expression #22358
    • Got 404 with non-ASCII coded static resources in webflux #22272

    📔 Documentation

    • NullPointerException in Base64Utils.encodeToString #22812
    • ✂ Remove the PROPAGATION_ prefix in the documentation of enum Propagation #22809
    • Inconsistent behavior when autowiring multiple beans by type as collection without matching beans #22735
    • Acknowledge that HttpHeaders are case-insensitive #22723

    🍱 ❤️ Contributors

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

  • v5.0.20.RELEASE Changes

    December 09, 2020

    🍱 ⭐ New Features

    • ContentCachingResponseWrapper should not add “Content-Length” when “Transfer-Encoding” is present #26193
    • Inefficient request handling inside ServletRequestDataBinder #26006
    • Avoid creation of unused logger instance in AbstractMediaTypeExpression #25903

    🍱 🐞 Bug Fixes

    • ✂ Remove duplicate "property" in PropertyCacheKey.toString() #26244
    • 🚚 UrlPathHelper#removeJsessionid doesn't remove the jsessionid from the URL #26085
    • 🔗 LinkedMultiValueMap downstream issue with MultiValueMapAdapter package private base class #25962
    • Wrong type inference in Kotlin while overriding RequestMappingHandlerMapping#getMappingForMethod #25873
    • ClassCastException when wiring bean using method injection (NullBean instead of 'null') #25870
    • 🚚 jsessionid breaks request mappings when removeSemicolonContent is turned off #25868

    📔 Documentation

    • 0️⃣ DateTimeFormat ISO.DATE_TIME javadoc contains misleading default note #26137
    • Incorrect example in javadocs of Assert.notNull(object, messageSupplier) #25871
  • v5.0.19.RELEASE Changes

    September 15, 2020

    🍱 ⭐ New Features

    • 👍 PropertiesLoaderSupport should ignore socket/connect exceptions as well #25721
    • Possible optimization in UrlResource #25551
    • Refine use of substring operations #25514

    🍱 🐞 Bug Fixes

    • FileUrlResource isWritable method returns true if URL protocol is not indicating a file #25740
    • 👌 VerifyErrors when using SpEL compilation with Thymeleaf when invoking a default method defined in an interface #25712
    • 📇 CallMetaDataContext.reconcileParameters overwrites cursor name #25709
    • SQLErrorCodesFactory.getErrorCodes(DataSource) returns empty error codes if access to transactional connection fails #25693
    • Joda-Time presence check fails to detect Joda-Time 2.x specifically #25659
    • Potential integer overflow in AbstractResourceBasedMessageSource.setCacheSeconds(int) #25643
    • Lazy dependency proxy does not populate bean dependencies #25564
    • StaticListableBeanFactory.isSingleton() returns false for singleton beans #25524
    • 🤡 MockHttpServletResponse reset() does not reset charset field #25511

    📔 Documentation

    • Document how to specify Jackson JSON view serialization hints with @RestController and Webflux #25705
    • 🏗 Prevent confusion about build(boolean) method in UriComponentsBuilder #25702