Skip to content

v6.1.2

Compare
Choose a tag to compare
@spring-builds spring-builds released this 14 Dec 11:16
· 1192 commits to main since this release

⭐ New Features

  • Optimize ContentCachingRequestWrapper allocation for known request size #31834
  • Inherit parent context in coRouter DSL #31831
  • Declare isStatic and releaseTarget as default methods on TargetSource #31820
  • Delegation support for JDBC 4.3 ConnectionBuilder and ShardingKeyBuilder #31795
  • Support for a read-only DataSource in LazyConnectionDataSourceProxy #31785
  • Add MySQLIdentityColumnMaxValueIncrementer #31784
  • Introduce overloaded MockPart constructor that accepts the Content-Type #31757
  • Introduce toString(Charset) in FastByteArrayOutputStream #31737
  • Avoid byte array copy in getContentAsString #31731
  • Improve "active" metrics handling in WebClient observations #31702
  • Make ResourceArrayPropertyEditor supports comma delimited location patterns #31700
  • Consistently log exceptions from TestExecutionListeners at WARN level #31688
  • Document need for -parameters flag in exception messages #31675
  • Improve @RegisterReflectionForBinding for enums #31570
  • Support direct shard database operation routing in Spring JDBC #31506
  • Log test aborted/skipped exceptions at INFO level in the TestContext framework #31479
  • Avoid double proxying for @Resource @Lazy fallback autowiring #31447
  • Add support for tuning the code generation for bean property values #31427
  • Avoid race condition in ConcurrentReferenceHashMap #31008
  • Allow functional bean registration to set bean order (equivalent to @Order) #30849
  • Allow AOT generated classes to be excluded from code analyzer tools #30824
  • Error page does not utilize forwarded prefix #30828
  • Fix SimpleJdbcCall named parameter binding for Sybase ASE #30231
  • DefaultWebClient ignores baseUrl when setting URI_TEMPLATE_ATTRIBUTE #30027
  • Avoid eager checkDefaultConnectionProperties call in LazyConnectionDataSourceProxy #29931
  • Allow TransactionAwareDataSourceProxy to eagerly fetch the connection #29423
  • Extract common value generator out of BeanDefinitionPropertyValueCodeGenerator #28999
  • PostgresCallMetaDataProvider should detect current schema as indicated by the JDBC Connection #28723
  • Implement setMaxTextMessageSize and setMaxBinaryMessageSize in JettyWebSocketSession #28325
  • Optimize cache used in AutowiredAnnotationBeanPostProcessor #28293
  • @Async aspect should clear cached executors when different BeanFactory set #28201
  • Component scanning should be able to ignore encrypted classes with invalid class version #27691
  • Property to control URL decoding in ServletCookieValueMethodArgumentResolver #26989
  • Support Predicate- based mappedHandler config in AbstractHandlerExceptionResolver #26772
  • SimpleJdbcCall with namedBinding=true for MS SQL Server #26072
  • Improve default setNull performance on PostgreSQL and MS SQL Server (e.g. for NamedParameterJdbcTemplate batch updates) #25679

🐞 Bug Fixes

  • <replaced-method /> unnecessarily requires explicit arg-type since 6.0 #31826
  • Avoid nested constructor data binding if there are no request parameters #31821
  • Custom Init or Destroy method from an interface cannot be invoked in a native image #31819
  • Avoid potential refresh deadlock with AbstractApplicationContext#registerShutdownHook #31811
  • Classes proxied by CGLIB produces NPE with coroutine async job on Springboot 3.2.0 #31809
  • Fix Comparators.nullsLow and Comporators.nullsHigh behavior #31808
  • MergedAnnotations finds duplicate annotations on method in multi-level interface hierarchy #31803
  • Pickup coroutineContext saved by CoWebFilter in coRouter #31793
  • Support for multiple CoWebFilters that change CoroutineContext #31792
  • TestCompiler should not discover annotation processors on the classpath by default #31791
  • @Cacheable key generator is called after invoking the cached method in case of a miss #31789
  • Encountered NotSerializableException for HttpComponentsHeadersAdapter when serializing HttpClientErrorException #31787
  • Exclude Part from nested constructor binding in WebFlux #31778
  • Fix condition for "Too many elements" in MimeTypeUtils.sortBySpecificity() #31769
  • AnnotatedTypeMetadata's getMergedRepeatableAnnotationAttributes() method ignores classValuesAsString #31768
  • SimpleAsyncTaskScheduler: task with fixed delay stops working after unhandled exception #31749
  • Spring unable to decode aggregated JSON content #31747
  • cannot resolve ServerRequest::pathVariable in nested RequestPredicate again #31732
  • @NotNull on JPA entity not respected in schema generation #31726
  • @Cacheable throws NullPointerException when encountering cached null value for empty Mono #31722
  • RestClient ResponseSpec.body() throws an exception instead of returning null if no response body is available #31719
  • UrlResource getFilename() suddenly returns null for certain paths #31718
  • DisconnectedClientHelper is missing "AbortedException" #31717
  • Constructor binding fails for Duration argument if request parameter is not present #31709
  • TraceId is missing in WebFlux controller handlers #31706
  • Wrong observation status tag when a Not Found in a webflux application #31703
  • Correct conversion from Resource[] with length 1 to Collection #31699
  • @ComponentScan added directly and via a meta-annotation leads to multiple scanning #31704
  • Unable to use kotlin value classes as function arguments to functions mapping web endpoints #31698
  • @DisabledInAotMode does not work in native image #31705
  • GenericTypeResolver does not resolve nested generics - causes issues with Jackson & Spring MVC #31690
  • DefaultManagedTaskScheduler created manually now throws a NPE if the scheduled executor is not configured #31751
  • Include Hibernate's Query.scroll() in SharedEntityManagerCreator's queryTerminatingMethods set #31682
  • TypeDescriptor does not check generics in equals method (for ConversionService caching) #31672
  • DataBinder fails with "No primary or single unique constructor found for interface MultipartFile" #31669
  • SpEL expression on a reloadable type can no longer be resolved #31668
  • Programmatic registration of RequestMappingInfo leads to "IllegalArgumentException: Expected lookup path" #31662
  • Current Observation.Context missing from WebClient request #31609
  • Multipart messages with empty parts are not correctly parsed in WebFlux #30953
  • Always fall back to original method if annotation pointcut used #30534
  • PathEditor cannot handle absolute Windows paths with forward slashes #29881
  • @Resource dependency injection fails with AOT/native #29614
  • Reactor Netty can only get the first cookie value when multiple cookies with the same name exist #28490
  • Slow SpEL performance due to method sorting in ReflectiveMethodResolver #28377
  • Cache-busting does not work when lazy-initialization is enabled #25488
  • Fail to register MBean with bean name containing invalid character #23608
  • Use of DatabaseMetadata#getProcedures (and functions) should take search string escape into account #22725

📔 Documentation

  • Fix link text in WebFlux @HttpExchange section of reference docs #31796
  • Improve documentation for custom exception requirements for RestClient #31783
  • Java-based Container Configuration section contains duplicated Section Summary #31777
  • SpEL Language Reference section contains duplicated Section Summary #31776
  • Incorrect #this and #root variable examples in SpEL documentation #31770
  • Document explicit @ModelAttribute is required for reflection hints inference #31765
  • Fix Javadoc for MockRestServiceServer.bindTo(RestClient.Builder) #31741
  • Document -Dspring.context.exit=onRefresh for Project CRaC testing purpose #31724
  • Link to spring.factories used in the TestContext framework in the reference manual #31723
  • Clarify that DI is a type of IoC #31679
  • Polish GenericTypeResolver Javadoc #31663
  • RestClient documentation improvements #31659
  • Add Javadoc to MvcResult getResponse().getErrorMessage() #31386
  • Review Default Profile section in the reference documentation #30319
  • Documentation needs to be updated with instructions for STOMP Client #28409
  • Document LazyConnectionDataSourceProxy setup for routing datasource to act on transaction definition read-only flag #21415
  • Document LazyConnectionDataSourceProxy for IsolationLevelDataSourceRouter usage with DataSourceTransactionManager #19688

🔨 Dependency Upgrades

  • Upgrade to Kotlin 1.9.21 #31667
  • Upgrade to Micrometer 1.12.1 #31813
  • Upgrade to Reactor 2023.0.1 #31814

❤️ Contributors

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

@HeartPattern, @HyeongMokJeong, @Johannes-Rost, @JuHyun419, @Nijco, @cdalexndr, @dogglezz, @freesme, @giuseppemilicia, @hpoettker, @izeye, @kilink, @lugaramirez, @mathieu-amblard, @meedbek, @perlun, @quaff, @reda-alaoui, @shin-mallang, and @tylerbertrand