Spring Framework 是一种流行的开源企业级框架,用于创建在 Java Virtual Machine (JVM) 上运行的独立、生产级应用程序。而Spring Boot 是一个工具,可以让使用 Spring 框架更快、更轻松地开发 Web 应用程序和微服务。随着 Spring Boot 的不断发展,开发人员必须跟上最新的升级和变化。
最近,Spring Boot 宣布发布 3.2.x 版本,该版本带来了多项新功能、错误修复和增强功能,鉴于对 Spring Boot 2.7.x 版本的支持已于 2023 年 11 月 18 日结束,这是一个非常重要且强制性的关注用于将 Spring Boot 应用程序升级到最新的 3.x 版本。
因此,在本文中,我们将讨论如何从 Spring Boot 2.x 迁移到 3.x,以及升级的优势以及开发人员在此过程中可能遇到的潜在困难。
升级指南1. 升级 JDK 17
Spring Boot 3.0 需要 Java 17 作为最低版本。
如果您当前使用的是 Java 8 或 Java 11,则需要在 Spring Boot 迁移之前升级 JDK。
从 Spring Framework 6.0 开始,尾部斜杠匹配配置选项已为 deprecated,其默认值设置为 false。
这意味着以前,以下控制器将匹配GET /health和GET /health/
@RestControllerpublic class HealthController { @GetMapping("/health") public String health() { return "Application is Working"; }}@RestControllerpublic class HealthController { @GetMapping("/health") public Mono health() { return Mono.just("Application is Working"); }}
7. RestTemplate 中的 Apache HttpClient
Spring Framework 6.0 中已删除对 Apache HttpClient 的支持,现在由 org.apache.httpcomponents.client5:httpclient5 取代(注意:此依赖项具有不同的 groupId)。
@Configurationpublic class RestTemplateConfig { @Bean public RestTemplate restTemplate(){ final SSLConnectionSocketFactory sslConnectionSocketFactory = SSLConnectionSocketFactoryBuilder.create() .build(); final PoolingHttpClientConnectionManager manager = PoolingHttpClientConnectionManagerBuilder.create() .setSSLSocketFactory(sslConnectionSocketFactory) .build(); final CloseableHttpClient closeableHttpClient = HttpClients.custom().setConnectionManager(manager) .build(); final HttpComponentsClientHttpRequestFactory componentsClientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(); componentsClientHttpRequestFactory.setHttpClient(closeableHttpClient); final RestTemplate restTemplate = new RestTemplate(componentsClientHttpRequestFactory); return restTemplate; }}