Spring Boot 3 新功能和新特性

Spring Boot 3 是 Spring 社区的一次重要更新,引入了许多新特性和改动,旨在提升开发效率、性能和安全性。本文将详细介绍 Spring Boot 3 的主要新功能和新特性,帮助开发者更好地理解和使用这一最新版本。

1. Java 17 支持

Java 17 是最低要求

Spring Boot 2 支持 Java 8、Java 11 和 Java 14,这使得开发者可以在旧版本的 Java 上运行 Spring Boot 应用。然而,随着 Java 17 的发布及其作为长期支持版本(LTS),Spring Boot 3 决定将 Java 17 作为最低支持版本,以利用其最新的语言特性和性能改进。

2. Spring Framework 6 支持

全面升级到 Spring Framework 6

Spring Boot 3 基于 Spring Framework 6(Spring Framework 通常简称为 Spring),这一版本全面支持 Java 17 和 Jakarta EE 9+(原Java EE)。Spring Framework 6 带来了许多改进,包括性能优化、新的编程模型以及更好的开发者体验。

3. Jakarta EE 9+

命名空间迁移

Spring Boot 3 迁移到了 Jakarta EE 9+,Spring Boot 2 使用的是 Java EE 8 和以下版本,这些版本的 API 使用的是 javax 命名空间。迁移到 Jakarta EE 9+ 意味着需要对代码进行修改,将所有 javax 包更改为 jakarta 包。例如:

  • javax.servlet -> jakarta.servlet
  • javax.persistence -> jakarta.persistence

4. AOT 编译支持

Spring Boot 3 引入了 Ahead-Of-Time (AOT) 编译支持,可以通过 GraalVM 将 Spring 应用程序编译成原生二进制文件,显著减少启动时间和内存占用。

Spring Boot 2 中没有原生支持 AOT 编译,虽然可以手动集成 GraalVM,但需要更多的配置和调整。Spring Boot 3 提供了开箱即用的 AOT 支持,使得原生编译更加简单。

<!-- 使用 Spring Native 插件和 GraalVM 进行 AOT 编译 -->
<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    <plugin>
        <groupId>org.graalvm.buildtools</groupId>
        <artifactId>native-maven-plugin</artifactId>
        <version>0.9.7</version>
    </plugin>
</plugins>

GraalVM 是一种基于 JVM 的增强型多语言运行时,它可以执行多种语言(如 JavaScript、Python、Ruby、R、LLVM-based languages 和 Java 等),并支持高性能的原生代码编译。
GraalVM 提供了一种新的 JIT 编译器,称为 Graal 编译器,替代了传统的 HotSpot 编译器,带来了更好的性能和优化能力。
Native Image:GraalVM 允许将 Java 应用程序编译为原生可执行文件(即所谓的 AOT,Ahead-of-Time Compilation),无需运行在 JVM 上。这种编译方式可以加快应用启动时间,并减少运行时内存占用,非常适合微服务和云原生应用场景。

5. Micrometer Tracing

Spring Boot 3 引入了对 Micrometer Tracing 的支持,通过 Micrometer 和 OpenTelemetry 实现分布式跟踪。这允许开发者在同一个框架内管理指标和跟踪信息,简化了可观测性的实现。

Spring Boot 2 中 Micrometer 主要用于指标收集和监控,而分布式跟踪需要通过 Spring Cloud Sleuth 等其他工具实现。Spring Boot 3 将这些功能整合在一起,提高了可观测性的统一性。

import io.micrometer.tracing.Tracer;
import org.springframework.stereotype.Service;

@Service
public class MyService {
    private final Tracer tracer;

    public MyService(Tracer tracer) {
        this.tracer = tracer;
    }

    public void someMethod() {
        var span = tracer.nextSpan().name("mySpan").start();
        try (var scope = tracer.withSpan(span)) {
            // 业务逻辑
        } finally {
            span.end();
        }
    }
}

6. 配置改动

Spring Boot 3 对一些配置属性进行了调整和改进。

7. 安全改进

更严格的默认配置

Spring Boot 3 加强了对应用程序安全性的支持,包括更强的密码编码器配置、更严格的默认安全设置以及对 OAuth 2.1 的支持。

在 Spring Boot 2 中,安全性配置相对简单,但默认设置不够严格。Spring Boot 3 通过更严格的默认配置和增强的安全性功能,提高了应用程序的安全性。

import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;

@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .csrf().disable()
            .authorizeRequests()
            .antMatchers("/public").permitAll()
            .anyRequest().authenticated();
        return http.build();
    }
}

8. Hibernate 6

JPA 的默认实现

Spring Boot 3 默认使用 Hibernate 6 作为 JPA 的实现,这带来了许多性能改进和新特性。但这也可能需要对现有代码进行一些调整,以适应 Hibernate 6 的变化。

9. WebSockets

性能和功能改进

Spring Boot 3 对 WebSockets 的支持进行了改进和扩展,提供了更好的性能和更丰富的功能,适用于实时通信和推送消息的应用场景。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new MyWebSocketHandler(), "/websocket").setAllowedOrigins("*");
    }
}

10. HTTP/3 和 gRPC 支持

新网络协议支持

Spring Boot 3 增加了对 HTTP/3 和 gRPC 的支持,使得基于 Spring Boot 的微服务能够利用这些新的网络协议来提升性能和可靠性。

11. Kubernetes 和云原生支持

更好的集成

Spring Boot 3 增强了对 Kubernetes 和云原生开发的支持,包括更好的配置管理、服务发现和分布式跟踪。

总结

Spring Boot 3 是一次重要的版本更新,带来了许多新功能和改进。通过升级到 Spring Boot 3,开发者可以利用最新的 Java 特性和框架改进,提高应用程序的性能、安全性和可维护性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容