Spring Boot 3.2 发行概括

支持虚拟线程

Spring Boot 3.2 提供了对虚拟线程的支持。要使用虚拟线程,您需要在 Java 21 上运行并将属性设置spring.threads.virtual.enabled为true。

1. Servlet Web 服务器

当启用虚拟线程时,Tomcat和Jetty将使用虚拟线程来处理请求。这意味着处理 Web 请求的应用程序代码将在虚拟线程上运行。

2. 任务执行

当启用虚拟线程时,下面的线程池将使用虚拟线程的方式。

  • applicationTaskExecutor bean 将是一个配置为使用虚拟线程的 SimpleAsyncTaskExecutor
  • 任何使用应用程序任务执行器的地方,例如@EnableAsync调用@Async方法时
  • Spring MVC 的异步请求处理和 Spring WebFlux 的阻塞执行支持现在都将利用虚拟线程。

ASimpleAsyncTaskExecutorBuilder现在在应用程序上下文中可用,并且可用于构建SimpleAsyncTaskExecutor. SimpleAsyncTaskExecutorCustomizerbeans 可用于自定义构建SimpleAsyncTaskExecutor。如果启用了虚拟线程,构建器会自动配置为使用它们。

3. 任务调度

当启用虚拟线程时:

  • taskSchedulerbean 将被SimpleAsyncTaskScheduler配置为使用虚拟线程。
  • SimpleAsyncTaskSchedulerBuilder现在在应用程序上下文中可用,并且可用于构建SimpleAsyncTaskScheduler.
4. 保持 JVM 的活动状态

有一个名为 的新属性spring.main.keep-alive。当设置为 时true,JVM 会保持活动状态,即使所有其他线程都是虚拟(或守护程序)线程。

5. 特定技术集成

启用虚拟线程后,将应用以下特定于技术的集成:

  • 虚拟线程执行器是为 RabbitMQ 侦听器自动配置的。
  • 为 Kafka 侦听器自动配置虚拟线程执行器。
  • Spring Data RedisClusterCommandExecutor将使用虚拟线程。
  • Spring for Apache Pulsar 将使用 aVirtualThreadTaskExector用于自动配置ConcurrentPulsarListenerContainerFactory和DefaultPulsarReaderContainerFactory.

支持Jetty 12

Spring Boot 现在支持 Jetty 12。Jetty 12 支持 Servlet 6.0 API,使其与 Tomcat 和 Undertow 保持一致。以前,如果您将 Jetty 与 Spring Boot 3.x 一起使用,则 Servlet API 必须降级到 5.0。这不再是必要的了。升级时删除 Servlet API 版本的任何覆盖。

Java版本支持

不再支持 Java 8,最低版本要求的JDK 17。

官方文档:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-Notes

你可能感兴趣的:(spring,spring,boot,后端,java)