Skip to content

v6.0.5

Compare
Choose a tag to compare
@spring-builds spring-builds released this 15 Feb 16:49
· 4156 commits to main since this release

⭐ New Features

  • Add RFC-8246 "immutable" attribute to CacheControl #29955
  • Allow MockRest to match header/queryParam value list with one Matcher #29953
  • DataBuffer should offer restricted access to underlying ByteBuffer #29943
  • Introduce HttpServiceProxyFactory#createClient Kotlin extension #29942
  • Support ProblemDetail serialization to XML with Jackson #29927
  • Refine TransactionalOperator.executeAndAwait nullability #29919
  • Early support for JDK 21 #29910
  • StringDecoder causes direct allocation of ByteBuffer #29889
  • Include all Hibernate query methods in SharedEntityManagerCreator's queryTerminatingMethods set #29886
  • Add native support for RSocketExchange. #29877
  • Add @Nullable to ProblemDetail.setProperty value argument #29868
  • Deprecate obsolete ConcurrentExecutorAdapter for removal in 6.1 #29865
  • ContentDisposition.toString() should include both regular and extended filename parameter #29861
  • Refine Jackson2ObjectMapperBuilder#configureFeature exception handling #29859
  • Flexible constructor resolution in AutowireCapableBeanFactory.createBean(Class) #29855
  • Optimize CorsConfiguration::checkHeaders #29853
  • Spring Web RestTemplate http.client.requests Metrics No Longer Have client.name Tag #29839
  • Allow @Aspect classes to extend concrete @Aspect classes #29830
  • Custom Constraint Validator not work with native image #29823
  • Deprecate HttpStatus 103 CHECKPOINT in favor of new EARLY_HINTS #29816
  • Fix R2dbcTransactionManager debug log: don't log a Mono #29800
  • Improve generated default name for @JmsListener subscription #29790
  • Support double-quoted values in HttpHeaders::getValuesAsList #29785
  • Support method validation for an interface only proxy like an HTTP interface client #29782
  • ResourceHandlers cannot resolve static resources without wildcard patterns #29739
  • Release R2DBC connection when cleanup fails in transaction #29703
  • Spring Webfilters and Kotlin Coroutines #29672
  • Support "multipart/mixed" and "multipart/related" in DefaultServerWebExchange #29671
  • @JsonDeserialize(builder = ...) does not work in GraalVM native image #29646
  • Combined class and method @RequestMapping without patterns should match root path as both "" and "/" #29625
  • Prefer problem detail media type independent of ordering in Accept header #29588
  • Restrict forwards in MockMvcWebConnection to 100 #29557
  • @JsonNaming strategy is not supported in GraalVM native image #29386
  • SQL supplier in R2DBC DatabaseClient is eagerly invoked #29367
  • Set reason for WebSocket CloseStatus.SESSION\_NOT\_RELIABLE #29220
  • HttpComponentsClientHttpConnector hangs when host is invalid #29156
  • Add ResponseEntity.ofNullable() to deal with non-Optional nullable objects #29117
  • Provide access to all configured interceptors in AbstractHandlerMapping #28985
  • Support Optional in PayloadMethodArgumentResolver #28945
  • Remove clear() call to release method of WeakEntryReference and SoftEntryReference #28863
  • Add MockMvc.multipart() Kotlin extensions with HttpMethod #28634
  • WebSocketConnectionManager constructor with prepared URI #28524
  • Deprecate Base64Utils #28434
  • List supported media types in HttpMediaTypeNotSupportedException when given invalid input media types #28062
  • Introduce getContentAsString and getContentAsByteArray to Resource #24651
  • Support Optional in Jackson 2 message converters #24498
  • Refine ModelAttributeMethodProcessor Kotlin exception handling #23846

🐞 Bug Fixes

  • DefaultHandlerExceptionResolver::doResolveException no longer returns ModelAndView customized via protected method #29971
  • ex.getPropertyName() is not initialized in ResponseEntityExceptionHandler#handleTypeMismatch #29959
  • Violation of a unique index on insert in MSSQL is translated to DataIntegrityViolationException instead of DuplicateKeyException #29950
  • PathMatchingResourcePatternResolver duplicates module/file resources #29934
  • ResourceUrlEncodingFilter throws StringIndexOutOfBoundsException in tests #29933
  • Explicit target ClassLoader for interface-based proxies in MvcUriComponentsBuilder #29913
  • org.springframework.web.context.ContextLoader cannot be loaded in a native image #29905
  • MockHttpServletRequest InputStream has been made static in gh-29125 #29901
  • MvcUriComponentsBuilder adds trailing slash if path is defined at controller level only #29897
  • Closing an ApplicationContext leads to Exception at ExecutorServiceAdapter #29892
  • Set WebClient Observation as current in reactor context #29891
  • Client request observation contributes full URI template to uri meter tag values #29885
  • HTTP client observations miss uri keyvalue for "/" requests #29879
  • ProblemDetail is missing serialization hints for Native Image #29801
  • Invalid Accept header results in IllegalStateException #29794
  • AOT processing fails with Set if type doesn't implement Comparable #29792
  • CSRF token not available to FreeMarker templates #29787
  • Fail more explicitly when AOT attempts to handle a bean definition that uses an instance supplier #29556
  • WebSocket stats not updated correctly when sessions cleared #29375
  • MockHttpServletRequest#setContentType fails with StringIndexOutOfBoundsException #29255
  • InMemoryWebSessionStore#changeSessionId makes blocking calls to UUID.randomUUID #29212
  • ReactorServerHttpRequest does not reflect forwarded host and port when forwarding-header-strategy=native or cloud platform detected #28601
  • Propagate CoroutineContext in reactive transaction #27308
  • Bean validation doesn't work on Kotlin coroutines controller parameters #23499

📔 Documentation

  • Update @DynamicPropertySource examples regarding changes in Testcontainers #29939
  • Refine ControllerMappingReflectiveProcessor documentation #29938
  • Clarify semantics of primitivesDefaultedForNullValue in BeanPropertyRowMapper #29923
  • Document instrumentation for RestTemplate and/or WebClient #29904
  • CronExpression::parse has invalid Javadoc #29884
  • Update Javadoc on async request timeout value in HandlerFunctionAdapter #29882
  • Document how to mark an observation as an error if the exception was handled #29848
  • Document that bean instance suppliers are not supported with AOT/native #29835
  • Clearly document that DataClassRowMapper supports Java records #29814
  • Increase number of TOC levels in generated PDF documentation #29781
  • Consistent @Bean method return type for equivalence with XML example #29338
  • Outdated Javadoc for AbstractApplicationContext.postProcessBeanFactory #29064
  • Improve documentation on support for a language-only Locale requested via "Accept-Language" #28673
  • Update the reference documentation with limitation related to @Bean return type #29944

🔨 Dependency Upgrades

  • Upgrade to Micrometer 1.10.4 #29899
  • Upgrade to Reactor 2022.0.3 #29900

❤️ Contributors

Thank you to all the contributors who worked on this release:

@Drezir, @FutureGadget, @OlgaMaciaszek, @ThomHurks, @a364176773, @bcc829, @derrick-pericipio, @divcon, @etylermoss, @fml2, @izeye, @j-min5u, @j3graham, @jprinet, @krzyk, @ks-yim, @making, @manthanb, @quaff, @r331, @sephiroth-j, @srivatsa-cfp, @vikeychen, @wplong11, @xavier-b, @yuezk, @yuzawa-san, and @zhmaeff