Spring Boot 3.0发布于2022年11月,本文将介绍一下Spring Boot 3.0带来了什么变化。
Java 17 与 Java 19的支持
我们的Java版本需要 JDK 17才可以使用Spring Boot 3。
其中Java 11与 Java 17都是LTS(Long Term Support) 长期支持版本,因此是相对稳定的。
而Spring Boot3仍然在JDK 19测试中,不过它是支持运行在JDK 19的。
Spring 6 与Jakarta EE 9
Spring Boot 3是基于Spring 6与Jakarta EE9开发的。
如果项目有用到javax.*
包名的话,需要改为jakarta.*
。
举个例子:
import javax.servlet.http.HttpServletRequest;
我们就需要改成
import jakarta.servlet.http.HttpServletRequest;
GraalVM 本地镜像支持
Spring Boot3 将支持Native Image。我们可以将应用程序直接转化成GraalVm本地镜像去使用。
我们通过GraalVM Native Image编译器的AOT编译内置实现了创建可执行的本地镜像。
简单的说,Spring Boot 3 借助了AOP编译技术,将编译成一个本地镜像执行文件。
比如,我们可以这样添加一个native的build profile:
<profiles>
<profile>
<id>native</id>
<build>
<plugins>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<executions>
<execution>
<id>build-native</id>
<goals>
<goal>compile-no-fork</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Log4j2 增强
Spring Boot 3 让Log4j2支持以下的特征:
Profile-specific 配置
<SpringProfile>标签将允许我们在Spring的profile中自定义一些配置。
比如我们可以在Log4j2下面定义以下的SpringProfile配置。
<SpringProfile name=”dev | test”>
// 选择dev profile还是test profile激活
</SpringProfile>
<SpringProfile name=”staging”>
// profile为staging的时候激活
</SpringProfile>
<SpringProfile name=”!production”>
// 当profile不为production时候激活
</SpringProfile>
改良@ConstructorBinding 检测
使用@ConfigurationProperties的时候,如果@ConfigurationProperties修饰的类中只有一个含有参数的构造器,我们就不需要使用@ConstructorBinding注解去指定了。如果我们有多个构造器,仍然需要使用@ConstructorBinding去告诉Spring Boot选择哪个去使用。
Observibility
Spring 6 介绍了 Spring Observibility,这是建立在Micrometer和Micrometer追踪中。Micrometer可以记录大量应用的监测数据,并且提供对OpenZipkin或者OpenTelemetry的追踪支持。
在spring boot3中默认提供了对Micrometer 1.10的支持,Spring Boot3会自动帮你配置一个ObservationRegistry的实例。
Micrometer可以用来收集应用程序各项指标数据,从而实现对应用程序的各种监控。
Spring Boot 3依赖包的更新
Spring Framework 6.0.
Spring AMQP 3.0.
Spring Batch 5.0.
Spring Data 2022.0.
Spring GraphQL 1.1.
Spring HATEOAS 2.0.
Spring Integration 6.0.
Spring Kafka 3.0.
Spring LDAP 3.0.
Spring REST Docs 3.0.
Spring Retry 2.0.
Spring Security 6.0
Spring Session 3.0
Spring WS 4.0.