springboot2.x到spring3.x的一些变化和示例说明

最近在做微服务版本升级工作,整理springboot2.x到spring3.x(spring5.x到spring6.x)的一些变化和示例说明。

1. Java 版本要求

  • Spring Boot 2.5.0:支持 Java 8 及以上版本。
  • Spring Boot 3.3.0:要求 Java 17 及以上版本,并且支持 Java 21。这意味着在升级过程中,首先需要确保 JDK 版本符合要求,并可能需要进行 JDK 的升级。

2. 底层依赖更新

  • Spring Boot 2.5.0:基于 Spring Framework 5.x 版本,并且使用 Java EE API。
  • Spring Boot 3.3.0:已经将所有底层依赖项从 Java EE 迁移到了 Jakarta EE API,基于 Jakarta EE 9 并尽可能地兼容 Jakarta EE 10。此外,Spring Boot 3.3.0 依赖于 Spring Framework 6.x 版本,这带来了许多新特性和改进。

3. 新特性和改进

  • 性能优化:Spring Boot 3.3.0 通过多种方式优化了性能,包括使用 CDS(类数据共享)功能来减少 Java 应用程序的启动时间和内存占用。此外,还添加了对 Java 21 中虚拟线程的支持,这种轻量级的线程实现可以显著提高高并发应用的吞吐量。
  • 安全性增强:新版本中增强了安全性,例如 Spring Security 添加了对 JwtAuthenticationConverter 的自动配置等。
  • 可观察性增强:Spring Boot 3.3.0 增强了应用的可观察性,支持 Micrometer 的新特性,并新增了对 Prometheus 1.x 的支持。
  • 配置文件增强:现在可以在 property 和 YAML 配置文件文件中将资源加载为 Base64 格式的值,这对于 SSL 证书等资源非常有用。
  • SBOMs 支持:Spring Boot 3.3.0 支持 SBOMs(软件材料清单),这有助于提高软件的透明度,并帮助开发人员、安全团队理解软件中包含的具体内容。

4. 废弃和移除的项

  • 在升级过程中,需要注意 Spring Boot 3.3.0 可能废弃或移除了旧版本中的一些特性和组件。因此,在升级前需要仔细查阅官方文档,了解哪些特性和组件已经不再支持或需要进行相应的替换。

示例说明(持续更新)

Jakarta EE 技术栈

// Spring 5.x
import javax.servlet.http.HttpServlet;

public class MyServlet extends HttpServlet {
    // ...
}

// Spring 6.x
import jakarta.servlet.http.HttpServlet;

public class MyServlet extends HttpServlet {
    // ...
}

Spring Security

// Spring 5.x
@Configuration  
@EnableWebSecurity  
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {  
    @Override  
    protected void configure(HttpSecurity http) throws Exception {  
        http  
            .authorizeRequests()  
                .anyRequest().authenticated()  
                .and()  
            .formLogin()  
                .and()  
            .httpBasic();  
    }  
}

// Spring 6.x
@Configuration  
public class SecurityConfiguration {  
    @Bean  
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {  
        http  
            .authorizeRequests()  
                .anyRequest().authenticated()  
                .and()  
            .formLogin()  
                .and()  
            .httpBasic();  
        return http.build();  
    }  
}

这些变化只是一些典型的情况,具体到你的项目中,你还需要根据项目的实际情况来调整。在进行迁移时,务必参考Spring官方发布的迁移指南来确保顺利过渡。

你可能感兴趣的:(spring,spring,boot,spring,cloud)