github spring-projects/spring-framework v6.2.0-M1

pre-release18 days ago

⭐ New Features

  • Remove unnecessary method.isAccessible() invocation #32548
  • Improve names of classes generated by the SpEL compiler #32497
  • Refine null-safety with NullAway build-time checks #32475
  • Consistent handling of undeclared checked exceptions in CGLIB proxies #32469
  • Resolve property-dependent parameter names for exception messages #32462
  • Consistent ErrorHandler support in TaskScheduler variants #32460
  • Add CBOR support to AllEncompassingFormHttpMessageConverter #32428
  • Reject null return value from MethodReplacer for primitive return type #32412
  • Make SpEL's OptimalPropertyAccessor private #32410
  • NPE when using pathExtension predicate for routes that have no file extensions #32404
  • Use Map#computeIfAbsent in SpEL support classes #32385
  • Use ELContext instead of deprecated VariableResolver API in JspPropertyAccessor #32383
  • Add web support for YAML via Jackson #32345
  • Add DataSource configuration/exposure to LocalEntityManagerFactoryBean #32344
  • ServletResponseHttpHeaders ignores content type in ServletResponse #32339
  • Use ConcurrentHashMap.newKeySet where feasible #32294
  • Avoid resizing of fixed-size HashSet/LinkedHashSet variants #32291
  • Support backticks for quoted identifiers in spring-r2dbc #32285
  • Avoid internal lifecycle synchronization for SingleConnectionFactory and SingleConnectionDataSource #32284
  • DefaultMessageListenerContainer should be able to scale down using default config #32260
  • Revise DefaultMessageListenerContainer for first-class virtual thread support #32252
  • Optimize Request Predicate attribute merging #32245
  • Add ThreadLocalAccessor for LocaleContext and RequestAttributes #32243
  • Avoid ASYNC dispatch if possible in DefaultAsyncServerResponse #32223
  • Deprecate LobHandler and SqlXmlHandler abstractions (including SqlLobValue and related support classes) #32179
  • Revisit default lifecycle phases and timeouts (e.g. for ThreadPoolTaskScheduler) #32152
  • Harmonize ChannelRegistration to use Executor rather than TaskExecutor #32129
  • Deprecate HttpHeaders.writableHttpHeaders #32116
  • JsonPathAssertions methods that take a type used as a lambda should be ordered consistently #32062
  • Deprecate local variable support in SpEL's internal ExpressionState #32004
  • Support sending large STOMP messages as fragmented frames on WebSocketStompClient #31970
  • NamedParameterJdbcTemplate does not support backticks for quoted identifiers #31944
  • Use UTF-8 by default for JSON multipart content in ContentRequestMatchers #31924
  • Add interception of RFC-7807 responses #31822
  • Provide more control over charset parameter when writing form data #31781
  • Enhance WebTestClient to support JSONPath decoding to higher level objects #31653
  • Enhance JsonPathExpectationsHelper to allow use of JSONPath Configuration #31651
  • Support "--" end of options in SimpleCommandLineArgsParser #31513
  • Make use of bean definition overriding more visible #31288
  • Initial support for Servlet 6.1 #31159
  • Initial support for JPA 3.2 #31157
  • Support to propagate a savepoint operation via TransactionSynchronization #30509
  • Resolve type variable recursively in GenericTypeResolver #30079
  • Propagate WebClient attributes into underlying HTTP client request where possible #29958
  • Provide a safe way to override and mock beans in the TestContext framework #29917
  • Invoke methods via public interface/superclass in compiled SpEL expressions #29857
  • Introduce null-safe index operator in SpEL #29847
  • @Valid annotation can't establish dependency relationship between beans #29730
  • Optimize constructor dependency injection performance for parameter name matches #28122
  • Efficient webjars version resolution natively in Spring #27619
  • Throw Exception when two primary beans are present in one factory #26612
  • Allow creation of Beans that cannot be autowired by type unless qualified #26528
  • Introduce IndexAccessor SPI to customize the SpEL Indexer #26478
  • Introduce support for non-@Primary fallback beans #26241
  • Optimize ConfigurationClassPostProcessor#enhanceConfigurationClasses method to shorten startup time #25738
  • Inherited @Transactional methods should be able to use class-level TransactionManager qualifier from concrete class #24291
  • TaskScheduler does not work with TaskDecorator #23755
  • Synchronization during singleton creation may result in deadlock #23501
  • Allow global default for @Transactional rollback behavior on checked exceptions #23473
  • Add support for resolving multiple bounds in type variables #22902
  • @Transactional annotation can't establish dependency relationship between beans #22526
  • Asynchronous EntityManagerFactory bootstrapping to complete on context refresh completion [SPR-17334] #21868
  • Provide a mechanism to be notified that a bean has been created [SPR-16822] #21362
  • Reduce the effect of different base package configuration on component scanning performance and make the effect more intuitive [SPR-16649] #21190
  • Support AssertJ variant in MockMvc [SPR-16637] #21178
  • Support configuration of connection URL via EmbeddedDatabaseBuilder [SPR-16619] #21160
  • Revisit storage of null attributes in AbstractFallbackTransaction/CacheAttributeSource [SPR-15513] #20072
  • Asynchronous initialization of beans during startup [SPR-14920] #19487
  • Autowiring with @Autowired/@Inject get much slower than with @Resource as the number of classes increases [SPR-13086] #17677
  • Parallel bean initialization during startup [SPR-8767] #13410
  • Support escaping prefix and separator in property placeholders [SPR-4953] #9628

🐞 Bug Fixes

  • Transactional event listener invoked like standard event listener if @EnableTransactionManagement not active #32319
  • Stop overriding thread name prefix for externally configured Executor in ChannelRegistration #32132
  • WebClient and RestClient's defaultRequest(..) is not invoked early enough #32053
  • Alias resolution in SimpleAliasRegistry depends on hash codes of alias values #32024
  • Fix DefaultDataBuffer#getNativeBuffer() to set correct limit #32009
  • DefaultDataBuffer#setNativeBuffer violates contract of DataBuffer #30984
  • The method getNativeBuffer() in DefaultDataBuffer returns misconfigured ByteBuffer #30967
  • ApplicationContext caches are not cleared as expected when beans are lazy initialized #30954
  • A configuration class superclass that is skipped due to register bean phase conditions is ignored when another configuration class that extends it is processed #28676
  • Configuration class parsing registers bean in parent class if overridden @Bean method defines an alternative name #28286
  • Conditions to determine if @ComponentScan should be applied can be chosen from the wrong class #27077
  • Fallback with placeholder is evaluated even if the fallback is not required #26268
  • Name of scanned @Configuration class affects @Import to work or fail #24643
  • Reject conditional @ComponentScan declarations that rely on the REGISTER_BEAN phase #23206
  • Initialization blocked by multi-threaded event publishing [SPR-16357] #20904
  • Invalid instance injected for generic type in case of partial type variable [SPR-16179] #20727

📔 Documentation

  • Polish Bean Overriding in Tests section of the reference guide #32411
  • Improve Javadoc for substituteNamedParameters() in NamedParameterUtils regarding empty lists #32380
  • StringUtils.uriDecode decodes strings with non-ASCII characters incorrectly #32360
  • Improve documentation for SpEL indexing support #32355
  • Document when the JPA infrastructure is ready for use #26153
  • Refactor configuration code samples to be more relevant for modern Spring applications #22171

🔨 Dependency Upgrades

  • Upgrade to HtmlUnit 3.11.0 #30392
  • Upgrade to Micrometer 1.13.0-RC1 #32595
  • Upgrade to Reactor 2024.0.0-M1 #32591

❤️ Contributors

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

@FelixDes, @Flamme1004K, @LeMikaelF, @PhilKes, @Trympyrym, @ZeroCyan, @alidandach, @andrea-mauro, @azdanov, @deejay1, @injae-kim, @izeye, @jackmiking, @kilink, @nullzl, @quaff, @ttddyy, and @yuhangbin

Don't miss a new spring-framework release

NewReleases is sending notifications on new releases.