Skip to content

Releases: spring-projects/spring-framework

v6.1.0-M3

19 Jul 09:05
Compare
Choose a tag to compare
v6.1.0-M3 Pre-release
Pre-release

⭐ New Features

  • Update warning log messages for SimpleAsyncTaskManager to take into account virtual thread mode #30902
  • Extract forwarded header handling out of UriComponentsBuilder #30886
  • Reduce logging for ResourceNotFoundException #30884
  • Revisit public API for MBeanExporter #30874
  • Early support for JDK 22 #30845
  • DataAccessUtils result accessors with Optional return value #27735
  • Add convert(Object, TypeDescriptor) method to ConversionService #25394
  • Revisit DataAccessException translation API #24634

🐞 Bug Fixes

  • @CachePut evaluates key before cache condition #22769
  • Topic messages are not sent when using transacted JmsTemplate in 'TransactionSynchronization.afterCommit' phase [SPR-16270] #20817

πŸ“” Documentation

  • Update javadoc to take virtual threads into account #30905

❀️ Contributors

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

@KaidosGH, @izeye, and @lgxbslgx

v6.1.0-M2

13 Jul 11:48
Compare
Choose a tag to compare
v6.1.0-M2 Pre-release
Pre-release

⭐ New Features

  • Refine the log message printed after restoration with CRaC #30876
  • Add HttpExchangeAdapter for RestClient #30869
  • Use latest version of sockjs-client in AbstractSockJsService #30848
  • ClientHttpRequestFactory based on Reactor Netty HttpClient #30835
  • Pause/resume capability for ThreadPoolTaskExecutor and ThreadPoolTaskScheduler #30831
  • Rearrange HttpHeader adapters #30823
  • Support use of MockRestServiceServer with RestClient #30821
  • Allow built ServerResponse to throw exception #30818
  • Method validation error handling by controller method parameter type #30813
  • Add RestClient Kotlin extensions #30807
  • Detect interface parameter annotations also from spring-messaging HandlerMethod #30801
  • Allows JdkClientHttpRequest.DISALLOWED_HEADERS to be customized. #30788
  • Change restore logging to info level #30775
  • Add MultipartFileArgumentResolver for HTTP interface client #30728
  • Align KeyValues of Scheduled-annotated observability with OpenTelemetry conventions #30721
  • Detect invalid transaction configuration for transactional event listeners #30679
  • Blocking execution for WebFlux controller methods #30678
  • Add a CoExchangeFilterFunction for WebClient similar to CoWebFilter #30650
  • Built-in Web Support for Method Bean Validation #30645
  • Spring MVC and WebFlux handling of method validation errors #30644
  • HttpClient based ClientHttpRequestFactory #30478
  • HTTP interface client infrastructure and adapter for RestTemplate #30117
  • Instrument Scheduled-annotated methods for observability #29883
  • Add AOT support for Kotlin constructors with optional parameters #29820
  • Introduce RestClient #29552
  • Space in integer request parameter neither triggers the default value nor generates a 400 #29550
  • Improve 404 error handling in Spring MVC #29491
  • Issue with equals(?)/hashCode() for ResolvableType.forRawClass(?) #28608
  • Introduce ModuleResource for resources loaded from a given Module #28507
  • ArrayToCollectionConverter should default to List if target type is Collection #28048
  • ResolvableType should allow to determine matching type argument for generic return type #27748
  • Parallel graceful shutdown for ThreadPoolTaskExecutor and ThreadPoolTaskScheduler #27090
  • Support target instantiation and binding via constructor in DataBinder #26721
  • Support for MultiValueMap elements in web data binding #26297
  • Add binding support to functional servlet and reactive stack #25943
  • @Scheduled methods in beans created by FactoryBeans are not cancelled #24629
  • ExecutorConfigurationSupport API refinement to control internal executor shutdown #24497
  • DataBinder using constructor parameter should use path variables #22748
  • Add JDBC SqlValue classes for arrays #1850
  • Support Kotlin parameter default values in HTTP handler methods #21139
  • Multiple TaskSchedulers to be supported with @Scheduled [SPR-16271] #20818
  • Let the DataBinder construct nested objects #20806
  • Add support to any Iterable types on PropertyAccessor #907

🐞 Bug Fixes

  • ScheduledAnnotationBeanPostProcessor fails without Reactive Streams on the classpath #30707
  • @SessionAttributes handler invoked too early if controller method execution is deferred #30337
  • Fix AbstractMessageConverter not delegating to ContentTypeResolver when message header is null #29768
  • JSON deserialization for Kotlin collections on inherited classes #24033

πŸ“” Documentation

  • Update documentation on customizing validation errors with MessageSource #30653
  • Update documentation for method validation improvements in spring-context, Spring MVC, and WebFlux #30643

πŸ”¨ Dependency Upgrades

  • Upgrade to Context Propagation 1.1.0-M3 #30882
  • Upgrade to Kotlin 1.9.0 #30719
  • Upgrade to Kotlin Coroutines 1.7.2 #30833
  • Upgrade to Micrometer 1.12.0-M1 #30872
  • Upgrade to Project CRaC 1.3.0 #30812
  • Upgrade to Reactor 2023.0.0-M1 #30856

❀️ Contributors

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

@OlgaMaciaszek, @erichaagdev, @izeye, @kooixh, @ljtfreitas, @marschall, @mdeinum, @spencergibb, and @yoshikawaa

v6.0.11

13 Jul 08:57
Compare
Choose a tag to compare

⭐ New Features

  • Reduce WARN level log output during test AOT processing #30867
  • Avoid need for reflection hints for MBeanExporter in native image #30846
  • Tolerate AnnotationUtils.isCandidateClass call with null as annotation type #30842
  • Simplify DefaultSingletonBeanRegistry.isDependent() #30839
  • Add missing @Nullable annotations in ContentDisposition.Builder #30820
  • Provide explicit support for collections, maps, and arrays in ObjectUtils.nullSafeConciseToString() #30810
  • Extend list of supported types in ObjectUtils.nullSafeConciseToString() #30805
  • Align ConcurrentMapCacheManager locking behavior with CaffeineCacheManager #30780
  • Improve logging for missing dependencies in MicrometerObservationRegistryTestExecutionListener #30747
  • Optimize KotlinReflectionParameterNameDiscoverer #30725
  • Change InvocableHandlerMethod#invokeSuspendingFunction return type to Object #30716
  • ResolvableType.hasUnresolvableGenerics() should cache its result #30713
  • Deprecate RootBeanDefinition(ResolvableType) constructor #30704
  • Reinstate dependency injection support for legacy JSR-250 @javax.annotation.Resource annotation #30695
  • Translate SQL Exception with State S0001 and Vendor Code 2628 to a Spring Exception in MSSQL 2019 #30681
  • Ensure Spring LogFactory contains all public methods from Apache LogFactory #30668
  • Infer hints required for aspects #28711
  • Improve diagnostics for CGLIB ClassLoader issues with shared classes in parent ClassLoader #25940
  • JdbcTemplate does not call handleWarnings in case of exception #23106
  • Avoid illegal reflective access in ContextOverridingClassLoader.isEligibleForOverriding #22791

🐞 Bug Fixes

  • Revert changes to toString() in FieldError #30799
  • For a prototype bean, if first-time rejected value is null, subsequent value will wrongly be null always #30794
  • Fix log level on error with @TransactionalEventListener #30776
  • ClassCastException in AbstractBeanDefinition.getBeanClassName() when getting bean multithreaded #30773
  • SerializableTypeWrapper does not consistently catch InvocationTargetException #30764
  • NPE in MvcUriComponentsBuilder with no-arg target method on interface #30756
  • ArithmeticException: long overflow on @Scheduled(fixedDelay = Long.MAX_VALUE) #30754
  • Jackson2ObjectMapperBuilder breaks when modules customizer follows modulesToInstall #30751
  • NullPointerException in reactive TransactionalOperatorImpl #30729
  • MicrometerObservationRegistryTestExecutionListener uses wrong ClassLoader to detect dependencies #30726
  • Support [package-]private init/destroy methods in AOT mode #30724
  • Package-private init/destroy methods are not always invoked #30718
  • Generic RedisKeyExpiredEvent not delivered to @EventListener anymore in 6.0.9 #30712
  • Explicit BeanDefinition#targetType is not honoured in AOT scenarios #30689
  • Spring ORM SpringBeanContainer when trying to create a bean fails with not found bean definition, and fallbacks to default hibernate bean creation #30683
  • PathResourceResolver#resolve*Internal is missing @Nullable declarations #30601
  • Code generation should only apply shortcut if the target method is not ambiguous #29278

πŸ“” Documentation

  • Update STOMP documentation with the new guidelines #30857
  • Clarify ReactiveTransactionManager exception declarations #30817
  • Doc: JdbcTransactionManager vs DataSourceTransactionManager #30802
  • Fix typo in Javadoc for BeanDefinitionDsl.kt #30798
  • Remove @Aspect for classes containing only @Pointcut declarations in reference documentation #30790
  • NestedRuntimeException javadoc not updated after implementation change #30748
  • AbstractMessageListenerContainer documentation and code disagree regarding log level #30730
  • Fix link text from "null" to "Component Classes" in Testing chapter #30714
  • Document that RowCallbackHandler can be used with NamedParameterJdbcTemplate #30705
  • Javadoc HTML tables are no longer rendered properly since upgrade to Java 17 #30701
  • Fix typo in UriUtils Javadoc #30598
  • Fix example in Javadoc for MultipartBodyBuilder #30593
  • Elaborate on ShallowEtagHeaderFilter limitations #30517
  • Document how to configure a custom LocalContainerEntityManagerFactoryBean to work with native #30498
  • Document that @Sql requires spring-jdbc and spring-tx on the classpath #30280
  • Document limitations of Servlet Filter observations #29398
  • Warn against direct usage of Servlet API in WebFlux applications #28872
  • ResultSet holdability into the View layer broken by Hibernate 5 #26557

πŸ”¨ Dependency Upgrades

  • Upgrade to micrometer-bom 1.10.9 and context-propagation 1.0.4 #30860
  • Upgrade to me.champeau.jmh 0.7.1 #30690
  • Upgrade to Reactor 2022.0.9 #30871

❀️ Contributors

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

@KSH-code, @antongub, @bnbakp0582, @cwatzl, @heoYH, @izeye, @kilink, @maartenc, @quaff, @rwinch, @valfirst, and @vbaidak

v5.3.29

13 Jul 08:17
Compare
Choose a tag to compare

⭐ New Features

  • Avoid illegal reflective access in ContextOverridingClassLoader.isEligibleForOverriding #30868
  • Improve diagnostics for CGLIB ClassLoader issues with shared classes in parent ClassLoader #30866
  • JdbcTemplate does not call handleWarnings in case of exception #30852
  • Tolerate AnnotationUtils.isCandidateClass call with null as annotation type #30843
  • Simplify DefaultSingletonBeanRegistry.isDependent() #30841
  • Provide explicit support for collections, maps, and arrays in ObjectUtils.nullSafeConciseToString() #30811
  • Extend list of supported types in ObjectUtils.nullSafeConciseToString() #30806
  • Align ConcurrentMapCacheManager locking behavior with CaffeineCacheManager #30781
  • ResolvableType.hasUnresolvableGenerics() should cache its result #30715
  • Ensure Spring LogFactory contains all public methods from Apache LogFactory #30711
  • Translate SQL Exception with State S0001 and Vendor Code 2628 to a Spring Exception in MSSQL 2019 #30682

🐞 Bug Fixes

  • For a prototype bean, if first-time rejected value is null, subsequent value will wrongly be null always #30809
  • Revert changes to toString() in FieldError #30800
  • Fix log level on error with @TransactionalEventListener #30784
  • SerializableTypeWrapper does not consistently catch InvocationTargetException #30767
  • NPE in MvcUriComponentsBuilder with no-arg target method on interface #30757
  • Jackson2ObjectMapperBuilder breaks when modules customizer follows modulesToInstall #30752
  • Spring ORM SpringBeanContainer when trying to create a bean fails with not found bean definition, and fallbacks to default hibernate bean creation #30685

πŸ“” Documentation

  • ResultSet holdability into the View layer broken by Hibernate 5 #30863
  • Clarify ReactiveTransactionManager exception declarations #30819
  • Doc: JdbcTransactionManager vs DataSourceTransactionManager #30814

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.34 #30873

v5.2.25.RELEASE

13 Jul 08:17
Compare
Choose a tag to compare

🐞 Bug Fixes

  • Reintroduce support for null SpEL expressions #30464
  • Make maximum SpEL expression length configurable #30452

v6.1.0-M1

15 Jun 12:50
Compare
Choose a tag to compare
v6.1.0-M1 Pre-release
Pre-release

⭐ New Features

  • Consistent simple value type check (including UUID treatment for data binding) #30664
  • Release shared JMS Connection when message listener container is stopped #30612
  • Property-driven onRefresh checkpoint during application context bootstrap #30606
  • Support letters other than A-Z in identifiers in SpEL expressions #30580
  • Remove System.out calls in PreComputeFieldFeature #30571
  • Have the ErrorResponse.Builder take in a custom ProblemDetail instance #30568
  • Allow setting the ProblemDetail.type via a MessageSource #30566
  • ClientHttpRequestFactory based on Jetty HttpClient #30564
  • Remove buffering in ClientHttpRequestFactory implementations #30557
  • Support JAXBElement in Jaxb2XmlEncoder #30552
  • Disable SpEL selector support in WebSocket messaging by default #30550
  • Enforce JPA bootstrap failure for incomplete Hibernate Validator setup #30549
  • Support parsing long dates in InstantFormatter #30546
  • Port BeanPropertyRowMapper and DataClassRowMapper for r2dbc #30530
  • Add non-null precondition checks in DefaultEntityResponseBuilder #30433
  • Deprecate spring-context-indexer #30431
  • Update RuntimeHintsAgentPlugin to use the native image code path #30422
  • HTTP interface client should not have blockingTimeout set and leave it to the underlying client by default #30403
  • Improve toString() for Profiles.of() implementation #30374
  • Add ReloadableResourceBundleMessageSource Resource selection hook #30369
  • Optimize DefaultLifecycleProcessor::stopBeans #30361
  • Deprecate AutowireCapableBeanFactory.createBean(Class, int, boolean) for consistent usage of createBean(Class) #30345
  • Support setCharacterEncoding(null) in MockHttpServletResponse #30341
  • Add support for converting a String to an Instant #30312
  • Refine RouterFunctionMapping ordering consistency #30278
  • CRaC Resource adapter for bean lifecycle in application context #30242
  • Configuration options for virtual threads #30241
  • Support for SequencedCollection/Set/Map #30239
  • MethodArgumentNotValidException::errorsToStringList should include only the resolved message when MessageSource is used #30198
  • Support @XmlSeeAlso in Jaxb2XmlDecoder #30167
  • Add SpEL support for registered MethodHandles #30045
  • Add test support to record async events, with JUnit Jupiter caveat #30020
  • Returning a CompletableFuture.failure() from an async, transactional method should mark the transaction as roll back #30018
  • Support @Scheduled on Reactive methods and Kotlin suspending functions #29924
  • Compatibility with JVM checkpoint restore (OpenJDK's Project CRaC) #29921
  • Validator factory methods with BiConsumer #29890
  • Spring MVC and WebFlux method validation support that also adapts ConstraintViolations #29825
  • Remove LocalVariableTableParameterNameDiscoverer #29559
  • Avoid use of java.net.URL constructors #29481
  • Creating relative resource for URL resource should create relative Resource even if relative path has URL in it #28522
  • ModelAttributeMethodArgumentResolver does not support custom field binding for immutable objects #28284
  • ConcurrentTaskScheduler and ConcurrentTaskExecutor can create an executor with no way to shut it down #27914
  • R2DBC ConnectionFactory bean .close() method should be called/subscribed when available #26991
  • org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler does not handle vendor-specific application/x-ndjson media types #26817
  • Improve the experience of handling validation errors in controller methods #26219
  • Compatibility with virtual threads (OpenJDK's Project Loom) #23443
  • Avoid repeated attempts to load a failing ApplicationContext in the TestContext framework [SPR-9548] #14182

🐞 Bug Fixes

  • Retain profiles used when running AOT #30421
  • Automatic context propagation stops working after an error occurs #30013

πŸ“” Documentation

  • Introduce JVM checkpoint/restore support documentation #30647
  • Fix link in Javadoc of PassThroughFilterChain #30365
  • Clarify behavior of the Elvis SpEL operator in documentation #30352
  • Fix link to releases feed #30340

πŸ”¨ Dependency Upgrades

  • Upgrade to Jackson 2.15 #30665
  • Upgrade to Kotlin 1.8 #29754
  • Upgrade to Kotlin Coroutines 1.7 #30514
  • Upgrade to Kotlin Serialization 1.5 #30515
  • Upgrade to SnakeYAML 2.0 #30048

❀️ Contributors

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

@OlgaMaciaszek, @RemusRD, @aooohan, @asomov, @izeye, @jstansel, @kzander91, @luohongtu, @making, @rwinch, and @srivatsa-cfp

v6.0.10

15 Jun 11:15
Compare
Choose a tag to compare

⭐ New Features

  • ClassLoader can be null in DeserializingConverter and should be annotated with @Nullable #30670
  • Introduce TestExecutionListener for Micrometer's ObservationRegistry in the TestContext framework #30658
  • Add missing hint for ResourceEditor #30628
  • Add missing hint for converting String to URI #30627
  • Redesign inner Pointcut implementations as standalone classes #30621
  • Add missing @Nullable in DefaultJmsListenerContainerFactory #30620
  • Handle custom JMS acknowledgment modes as client acknowledge #30619
  • Declare Advisor#isPerInstance() as default method #30614
  • Improve error message for unsupported character in SpEL expression #30602
  • Multipart data is always read irrelevant of handler response #30590
  • Performance optimization in AbstractBeanFactoryBasedTargetSource.hashCode() #30576
  • Log a warning when commons-logging is in the classpath #30575
  • Always use MethodArgumentNotValidException(MethodParameter, BindingResult) constructor #30558
  • Remove non-empty filename check in ContentDisposition builder #30537
  • Add missing EntityManagerFactory hints for SharedEntityManagerCreator #30523
  • Disable Hibernate reflection optimizer with native #30521
  • Introduce a method in MockHttpServletRequestBuilder to set remote address #30497
  • Skip class transformer in PersistenceUnitInfoDescriptor for native images #30492
  • @Bean 'lite' mode not supported if @Bean methods are not declared locally #30449
  • Align HibernateJpaVendorAdapter with Hibernate ORM 6.2 #30288
  • Add nested propagation support to R2dbcTransactionManager #30134

🐞 Bug Fixes

  • Cron expression scheduling might be triggered 1 millisecond earlier #30666
  • Change of behaviour for UUID in bean validation output in v5.3.27 #30661
  • Test context cache stats are not logged when ApplicationContext fails to load #30635
  • Inconsistent ProxyCallbackFilter#equals/hashCode methods in CglibAopProxy #30615
  • SpEL's CompoundExpression.toStringAST() incorrectly includes . for indexed properties #30610
  • NPE in ReactiveTransactionSupport.unwrapIfResourceCleanupFailure #30597
  • CollectionFactory.createMap(HashMap.class, 0) now returns a LinkedHashMap rather than a HashMap #30596
  • ThreadLocalTargetSource does not include actual target bean name in NamedThreadLocal #30581
  • ApplicationListenerMethodAdapter inconsistently publishes events from CompletableFuture #30578
  • Unsupported SQL type: TIMESTAMP_WITH_TIMEZONE when using OffsetDateTime with MySQL #30556
  • SpringBeanContainer not called with Hibernate ORM 6.2 #30545
  • WebFlux returns 406 instead of RFC 7807 response for subtype of ProblemDetail #30533
  • HTTP Interface client cannot send URI query parameter with multipart request #30520
  • Transaction isolation level not working with R2dbcTransactionManager #30508
  • Support for AOT processing with GraalVM tracing agent is not consistent #30511
  • For @Bean method that returns null, @Autowired injects NullBean instead of null for cached arguments #30485
  • MediaType property binding issue in native builds #30491
  • InjectionMetadata AOT contributions do not check for existing property value #30476
  • Spring Framework 6.0.8 appears to cause issues in OSGi environment #30389
  • Empty @RequestMapping method should match both "" and "/" consistently #30293
  • EclipseLinkJpaDialect: Unexpected default isolation levels #29997
  • Memory leak with CglibAopProxy$ProxyCallbackFilter #26266

πŸ“” Documentation

  • Fix markup issue in Javadoc of QuartzCronField #30646
  • Document @DirtiesContext semantics when declared at the class level and method level #30623
  • Add missing Javadoc for RegisteredBean.resolveAutowiredArgument() #30609
  • Fix invalid link in transaction resources #30570
  • FileSystemUtils::deleteRecursively Javadoc refers to File instead of Path #30554
  • Improve Javadoc for ExchangeFilterFunction #30543
  • Update Javadoc and reference doc for WebMvcConfigurer to mention Boot's HttpMessageConverters #30538
  • Add Javadoc since to InjectedElement.shouldInject() #30512
  • Fix wording in r2dbc Statement Filters section of ref docs #30482
  • Typo in Spring official documentation #30473
  • Link for @javax.annotation.Nonnull is wrong in Javadoc for Spring's @NonNull #30455
  • Improve how the build deals with javadoc invalid references #30428
  • Docs: Remove duplicate in SpEL feature list #30404
  • Document which @Scheduled attributes support SpEL expressions #29290

πŸ”¨ Dependency Upgrades

  • Upgrade to micrometer-bom 1.10.8 and context-propagation 1.0.3 #30657
  • Upgrade to Reactor 2022.0.8 #30655

❀️ Contributors

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

@Foolkin, @anyuruf, @galingerv, @izeye, @jmewes, @kihyuk-sung, @leewin12, @marcingrzejszczak, @rweisleder, @rwinch, @scordio, @ssang1105, and @vpavic

v5.3.28

15 Jun 11:35
Compare
Choose a tag to compare

⭐ New Features

  • ClassLoader can be null in DeserializingConverter and should be annotated with @Nullable #30672
  • Performance optimization in AbstractBeanFactoryBasedTargetSource.hashCode() #30585
  • Consistent support for MultiValueMap and common Map implementations in CollectionFactory #30441
  • Reject null and empty SpEL expressions #30373
  • Introduce Environment.matchesProfiles() for profile expressions #30226

🐞 Bug Fixes

  • Change of behaviour for UUID in bean validation output in v5.3.27 #30662
  • Spring Framework 5.3.27 appears to cause issues in OSGi environment #30637
  • Inconsistent ProxyCallbackFilter#equals/hashCode methods in CglibAopProxy #30616
  • EclipseLinkJpaDialect: Unexpected default isolation levels #30589
  • ThreadLocalTargetSource does not include actual target bean name in NamedThreadLocal #30586
  • ApplicationListenerMethodAdapter inconsistently publishes events from CompletableFuture #30584
  • For @Bean method that returns null, @Autowired injects NullBean instead of null for cached arguments #30551
  • Make maximum SpEL expression length configurable #30446
  • Respect TaskDecorator configuration on DefaultManagedTaskExecutor #30443

πŸ“” Documentation

  • Document which @Scheduled attributes support SpEL expressions #30642
  • FileSystemUtils::deleteRecursively Javadoc refers to File instead of Path #30555

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.33 #30656

v6.0.9

11 May 13:13
Compare
Choose a tag to compare

⭐ New Features

  • Consistent support for MultiValueMap and common Map implementations in CollectionFactory #30440
  • Introduce internal constants for implicit bounds in TypeUtils #30423
  • Update major/minor version properties in MockServletContext #30395
  • Reject null and empty SpEL expressions #30371
  • Support Test AOT processing with GraalVM tracing agent and Native Build Tools #30281
  • Introduce Environment.matchesProfiles() for profile expressions #30206
  • Optimize MultiValueMap iteration operations #29972

🐞 Bug Fixes

  • Respect TaskDecorator configuration on DefaultManagedTaskExecutor #30442
  • Qualifiers registered programmatically are not supported by AOT #30410
  • Support for InjectionPoint in bean factory methods when using AOT #30401
  • Bean methods with generic array/varargs parameters break native compilation #30407
  • ApplicationListenerMethodAdapter supports non-matching generic events #30399
  • Processing several @PersistenceContext injection points on the same class with AOT generates code that does not compile #30437
  • Make maximum SpEL expression length configurable #30380
  • Record beans do not compile to native images #30383
  • Missing resource hint for @PropertySource#value #30376
  • ApplicationEventPublisher - PayloadApplicationEvent not received by EventListener if event fired from child context #30360
  • StringDecoder.decode() should release chunks on cancellation #30299
  • Quote '?' in Quoted Printable filename #30252
  • Missing reflection hint for custom PropertySourceFactory in native image #30175
  • Aot generated sources fail to compile with 'File name too long' error #29846

πŸ“” Documentation

  • Update package-info for CGLIB fork #30461
  • Clarify differences between GenericBeanDefinition and RootBeanDefinition #30444
  • Document how to configure FactoryBean with a configurable target with AOT #30434
  • Add Antora docs-build branch #30415
  • Switch the reference documentation to Antora #30414
  • @ResponseStatus documentation incorrect #30305

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.10.7 #30451
  • Upgrade to Reactor 2022.0.7 #30450

❀️ Contributors

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

@divcon, @izeye, @luozhenyu, @rwinch, @sigee, and @yuzawa-san

v6.0.8

13 Apr 09:07
Compare
Choose a tag to compare

⭐ New Features

  • Disable variable assignment in SimpleEvaluationContext #30326
  • Limit SpEL expression length #30325
  • Limit string concatenation in SpEL expressions #30324
  • Introduce StringUtils.truncate() #30290
  • Introduce ObjectUtils.nullSafeConciseToString() #30286
  • Introduce assertions against Cookie attributes in CookieResultMatchers for MockMvc #30285
  • Polishing #30267
  • Support SameSite cookie attribute in MockMvcHttpConnector #30264
  • Update MockCookie to make use of Servlet 6.0 APIs and semantics for "attributes" #30263
  • Refine initRequestBuilder in DefaultWebClient #30254
  • HttpServerErrorException contains not-serializable field of type DefaultResponseErrorHandler #30224
  • Add class hints for Jackson annotations on fields and methods #30208
  • Add HttpMethod reflection hint to ObjectToObjectConverterRuntimeHints #30201
  • Improve performance of canRead() in HttpMessageReader's #30192
  • Optimize array creation in SpEL ConstructorReference #30189
  • ConstructorResolver error hints about mixing indexed and named args #30169
  • Replace Collections.unmodifiableList(new ArrayList(..)) with List.copyOf() #30166
  • Add assert null validations for DefaultServerResponseBuilder #30157
  • Use InputStream.readAllBytes() in FileCopyUtils.copyToByteArray() #30155
  • Cache ServerHttpRequest::getMethod in AbstractServerHttpRequest #30139
  • Use String.equals() in LiteralPathElement #30138
  • Optimize some iterations in BodyExtractor and BodyInserter #30136
  • Add a couple missing java.time types to StatementCreatorUtils #30123
  • WebClient observations should not record CANCEL signals as aborted if response was received #30070
  • Destroy method not found in native image if concrete bean type is not exposed #29545
  • Contribute init/destroy lifecycle introspection hints for registered beans #29246

🐞 Bug Fixes

  • NPE thrown for nonexistent default-destroy-method in XML config #30301
  • Fix comparison of title in equals() and hashCode() of ProblemDetail #30294
  • SSE breaks with indenting serializer in WebMvc.fn #30277
  • @HttpExchange interface does not resolve return type correctly while using with suspending methods #30266
  • Increase max regex length in SpEL expressions #30265
  • Missing response information from client observation context when filter functions fail #30247
  • NullPointerException on timeout in HttpComponentsClientHttpConnector when using Apache HttpComponents #30245
  • Wrong MockRestRequestMatchers.header() method in spring-test being invoked (JDK issue?) #30220
  • Refine generic type management in AbstractMessageWriterResultHandler #30214
  • MvcUriComponentsBuilder.fromMethodCall breaks for controller with CharSequence return type #30210
  • Encode IPV6 Zone IDs (%) in ReactorServerHttpRequest #30188
  • Handle all exceptions for stored proc output param retrieval in SharedEntityManagerCreator #30161
  • Fix IllegalArgumentException that prevents STOMP DISCONNECT from reaching the client #30120
  • TypeNotPresentException: org/springframework/cglib/proxy/NoOp not present on Java 17 #30115

πŸ“” Documentation

  • Add since tags to sameSite() and attribute() in CookieResultMatchersDsl #30308
  • Fix incorrect jakarta.inject artifact version #30270
  • Fix @PathVariable reference documentation code snippets #30243
  • Use diamond operator in examples in reference manual #30204
  • Fix example in Javadoc for @EnableWebSocket #30183
  • Fix anchor in link to "Web on Reactive Stack" chapter #30158
  • Documentation for Vavr's Try method to trigger transaction rollbacks #30108
  • Document that WebClient defaultStatusHandler do not apply to exchange* methods #30059

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.10.6 #30317
  • Upgrade to Reactor 2022.0.6 #30316

❀️ Contributors

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

@1993heqiang, @TAKETODAY, @ZouHongxue, @alexjansons, @divcon, @edyda99, @filipblondeel, @ghostg00, @giuseppemilicia, @izeye, @justin-tay, @krzyk, @kyuarl21, @quaff, @shitian9, @simonbasle, @srivatsa-cfp, @ssang1105, @stsypanov, @wizard4wu, and @yuzawa-san