github spring-projects/spring-framework v6.1.0-RC1

latest releases: v6.2.0-RC3, v6.2.0-RC2, v6.1.14...
pre-release13 months ago

⭐ New Features

  • Enforce REQUIRES_NEW for correct transaction configuration on transactional event listeners #31414
  • TestCompiler should allow to configure the Locale that renders compiler messages #31408
  • Consistent Object result declarations for JdbcClient's ResultQuerySpec #31403
  • Move ReactorResourceFactory to org.springframework.http.client package #31399
  • Prevent message resolution after context close #31397
  • Handle STOMP messages to user destination in order #31395
  • AOT bean registrations miss reflection hints on property fields #31390
  • Support Jackson's DatatypeFeature in Jackson2ObjectMapperBuilder #31380
  • Allow Filters to be initialized when they're added to MockMvc #31362
  • Use schema-based config in sql-error-codes.xml #31354
  • Optimize uses of onErrorResume() #31352
  • AOT bean registrations miss reflection hints on interfaces #31350
  • SimpleAsyncTaskScheduler should run fixed-delay tasks on scheduler thread #31334
  • Allow custom observation convention for RestClient #31325
  • MockMvcHttpClientConnector support for RequestPostProcessor hook #31298
  • Expose shouldHandle(ApplicationEvent) in ApplicationListenerMethodAdapter #31295
  • Make ReactorNettyClientRequestFactory lifecycle-aware #31281
  • Add a constructor with externally managed Reactor Netty resources to ReactorNettyClientRequestFactory #31280
  • Consistent CannotAcquireLockException translation for PostgreSQL serialization failure behind JPA #31274
  • Simplify ServerRequestExtensions.queryParamOrNull() #31264
  • Reduce nested class lookups in ClassUtils #31258
  • Print JVM restoration time in DefaultLifecycleProcessor #31252
  • ValueLoaderEntryProcessor should not be created for every call to JCacheCache#get #31250
  • Introduce initialize() method in AbstractRoutingDataSource and AbstractRoutingConnectionFactory #31248
  • Add MappingJackson2MessageConverter constructors that accept an ObjectMapper #31234
  • Eliminate synchronized block to avoid thread pinning in SingletonSupplier #31227
  • Add OuputStream BodyInserter #31184
  • SseEmitter should format a multiline String #30965
  • Suppress logging from HandlerMapping when used for Spring Security's mvcRequestMatcher #30349
  • Lenient handling of unencoded URIs in ForwardedHeaderTransformer #30137
  • Support DispatcherType.INCLUDE in DefaultServletHttpRequestHandler #30113
  • Introduce caching for functional routing #29985
  • Log CglibAopProxy errors as WARN instead of INFO #29773
  • Add CharBufferDecoder #29741
  • Provide the HttpRequest on the ClientResponse interface #28397
  • Batch update return generated keys #28132
  • Allow filters to be registered with MockMvc for particular dispatcher types #27717
  • Introduce class-level execution phases for @Sql #27285
  • Add default methods to MailSender and JavaMailSender as appropriate #23651
  • Remove all ApplicationListenerMethodAdapters on context close [SPR-17456] #21988
  • Handle STOMP messages from client session in order #21798
  • Call Lifecycle.stop() for already started beans on failed refresh [SPR-15468] #20028

🐞 Bug Fixes

  • Fix regression in JmsAccessor#setSessionAcknowledgeMode #31328
  • JdbcClient does not update KeyHolder when using positional parameters #31297
  • AOT bean registrations miss reflection hints on public methods #31293
  • DefaultFetchSpec should not buffer results in temporary list buffers #31282
  • Missing reflection hint on Publisher for bean destroy methods support #31278
  • Missing reflection hint on Eclipse FileLocator #31271
  • Missing resource hint for spring.properties #31270
  • Missing reflection hints on Kotlin classes for KotlinDetector #31269
  • Missing reflection hint on MonetaryAmount in conversion service #31266
  • Missing reflection hints for jakarta.inject classes #31259
  • ResponseBodyEmitter ignores calls to complete but remains open after JSON write error while sending #30687
  • The task in AsyncTaskExecutor throws an exception before execution, and ControllerAdvice will be called twice. #30232
  • Suppress deprecation warning for AOT-generated code that refers to a deprecated member #29597
  • Avoid duplicate ApplicationListener firing (proxy vs. target) #28322
  • JCacheCache#putIfAbsent is not atomic #21591

📔 Documentation

  • Add Search in all Spring Docs #31290
  • Add missing period in RestClient documentation #31237
  • Improve wording in Javadoc for @Autowired #31235
  • Clarify ClientHttpRequestInterceptor#intercept() must close response if it throws exception after receiving the response #29751
  • Create migration guide from RestTemplate to RestClient #23269

🔨 Dependency Upgrades

  • Upgrade to Micrometer 1.12.0-RC1 #31398
  • Upgrade to Reactor 2023.0.0-RC1 #31406

❤️ Contributors

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

@JakobFels, @OnlyWick, @StellarStrategist, @aahlenst, @alidandach, @bergander, @bramhaag, @chaewon121, @ctailor2, @e-freni, @esperar, @ghainesii, @hpoettker, @izeye, @joakimmohn, @kang-hl, @kriegaex, @kzander91, @markusheiden, @mdeinum, @qpakzk, @quaff, @ralph-riedel, @runeflobakk, @rwinch, @sephiroth-j, @shin-mallang, @violetbeach, and @vpavic

Don't miss a new spring-framework release

NewReleases is sending notifications on new releases.