Spring boot 3.2 新特性介绍

2023-12-18 18:29:07

1.增加了对Apache Pulsar的支持

使用方式参考 官网Messaging

2.增加了对虚拟线程的支持? 需要jdk 21 版本

在spring-boot 项目中 通过设置

spring.threads.virtual.enabled=true

即可开启虚拟线程。虚拟线程开启后作用域如下

1.Servlet Web Servers

当启用虚拟线程时,Tomcat和Jetty将使用虚拟线程进行请求处理。这意味着处理web请求的应用程序代码(如控制器中的方法)将在虚拟线程上运行。

2.任务执行


????????SimpleAsyncTaskExecutor ?运行任务将使用虚拟线程
????????@EnableAsync开启后 使用@Async注解的方法将使用虚拟线程
????????SimpleAsyncTaskExecutorBuilder 将自动配置使用虚拟线程 ?


3.任务调度taskScheduler


任务调度的bean将是配置为使用虚拟线程的SimpleAsyncTaskScheduler。
只有spring.task.scheduling.thread-name-prefix属性和spring.task.scheduling.simple.* 会起作用。
其他spring.task.scheduling.属性被忽略.(因为它们特定于基于池的调度程序)


4.Keeping the JVM Alive


新属性

spring.main.keep-alive=true

为true的时候,JVM将保持活动状态,即使所有其他线程都是虚拟(或守护进程)线程


5.第三方支持
  1. RabbitMQ侦听器自动配置虚拟线程执行器。

  2. Kafka监听器自动配置了一个虚拟线程执行器。

  3. Spring Data Redis的ClusterCommandExecutor将使用虚拟线程。

  4. Spring for Apache Pulsar将自动配置ConcurrentPulsarListenerContainerFactory和DefaultPulsarLeaderContainerContaineFactory使用VirtualThreadTaskExector。
    ?

3.支持 RestClient?

使用样例参考这篇博客??spring boot 3.2 使用 restclient 使用 ReactorNettyClientRequestFactory 作为请求创建工厂 忽略SSL-CSDN博客

4.RestTemplate HTTP Clients

当使用Jetty作为web服务器的时候,Spring Boot的HTTP客户端会自动进行检测,RestTemplateBuilder将使用Spring Framework 6.1中引入的新JettyClientHttpRequestFactory作为配置项。

对JdkClientHttpRequestFactory的支持已添加到ClientHttpRequestFactories中,使用的时候需要手动引入,代码如下

@Bean
RestTemplateBuilder restTemplateBuilder(RestTemplateBuilderConfigurer configurer) {
    return configurer.configure(new RestTemplateBuilder())
        .requestFactory(
                (settings) -> ClientHttpRequestFactories.get(JdkClientHttpRequestFactory.class, settings));
}

5.新入的自动配置??JdbcClient

Data

6.Initial support for JVM Checkpoint Restore

Spring Boot Reference Documentation

7.?SSL Bundle Reloading

更多内容Core Features

SSL bundles 现在可以在信任材料发生更改时自动重新加载。
SSL bundles 必须通过设置属性eload-on-update为true来选择使用此功能。
捆bundles的使用者还必须支持重新加载。

Consumers that support reloading are:

  • Netty web server

  • Tomcat web server

配置如下?

spring.ssl.bundle.pem.mybundle.reload-on-update=true
spring.ssl.bundle.pem.mybundle.keystore.certificate=file:/some/directory/application.crt
spring.ssl.bundle.pem.mybundle.keystore.private-key=file:/some/directory/application.key

?

文章来源:https://blog.csdn.net/m0_37939214/article/details/135066815
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。