设为首页 加入收藏

TOP

Apache Dubbo 官方正式发布 Spring 6 & Spring Boot 3 支持(一)
2023-07-25 21:38:56 】 浏览:51
Tags:Apache Dubbo 方正式 Spring Boot 支持

Dubbo 简介

Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。

背景

Spring Framework 6.0 于11月16日正式发布 GA 版本,Spring Boot 3.0 也于11月25日正式发布 GA 版本,并且Spring 6 & SpringBoot 3最低支持JDK17,意味着如果升级使用Spring 6 & Spring Boot 3时就必须需要升级使用JDK17。

然而Java 8 目前是国内主流生产环境 Java 版本之一。虽然近几年陆续发布了 Java 11、Java 17 官方 LTS 版本,但是大部分开发者依然本着 “你发任你发,我用Java8” 的看法看待JDK的升级。不过 Java 17 版本在性能上确实做了大量的优化特别是 ZGC 的发布,促进了国内不少企业升级到 Java 17。

而Spring 框架在 Java 生态中的重要程度不言而喻,我们相信在Spring 这波“最低支持JDK17” 推动下,Spring Framework 6.0 & Spring Boot 3.0 一定会在不久的将来被大家接受,并成为主流技术栈。

Dubbo 社区非常重视 Spring 社区的更新迭代,总会积极支持适配,这点在最近Spring 6.0 和 Spring Boot 3.0 发布中同样得到了验证。Dubbo 社区早在Spring 6.0.0-RC4Spring Boot 3.0.0-RC2 时已经做好了大致的兼容适配,但是为了保证Dubbo 能够完全适配 Spring 6 和 Spring Boot 3.0 的正式版,我们一直等到Spring Boot 3.0 GA 后,才选择宣布这个令人高兴的事情。

为什么要升级到 Spring 6.0 & Spring Boot 3.0

首先是,升级到 Spring 6.0 & Spring Boot 3.0 将获得未来很长年限的由官方提供的免费技术支撑。Spring 6 和 Spring Boot 3 是 Spring 下一代技术框架基石,尽管官方当前同时维护了 Spring 5.3 和 Spring Boot 2.6.x 和 Spring Boot 2.7.x,但它们最终都会在 2025 年和 2026 年结束其 OSS support(Open Source Software Support)。

其次是,您将在新一代框架中获得大量新特新,这些新特性都可以在 Spring Boot 3.0 Release Noteshttps://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes)What's New in Spring Framework 6.xhttps://github.com/spring-projects/spring-framework/wiki/What's-New-in-Spring-Framework-6.x) 中获得。

最后是,Spring 6.x 和 Spring Boot 3.x 将会最广泛的支持 JDK 17-29,需要额外说明的是 JDK17 作为当前最新的LTS 版本,它提供了一组累积的最新语言、API 和 JVM 增强功能,使其成为更具吸引力的编译版本的升级,这也是为什么最低支持 JDK17 的原因。

Dubbo 支持 Spring 6 & Spring Boot 3

现在很高兴向大家宣布,Dubbo 已经开始兼容Spring 6 & Spring Boot 3,所以当前Dubbo 3.2.0-beta.2 版本可以同时兼容支持Spring Boot 1.x、2.x、3.x。您现在可以使用dubbo-3.2.0-beta.2版本体验其兼容性。

<dependency>
	<groupId>org.apache.dubbo</groupId>
	<artifactId>dubbo-spring-boot-starter</artifactId>
	<version>3.2.0-beta.2</version>
</dependency>

更多关于Spring Boot 3.0 集成 Dubbo 使用示例可参见apache/dubbo-sample:https://github.com/apache/dubbo-samples/tree/master/1-basic

升级总结

我们根据Dubbo 兼容适配Spring 6 & Spring Boot 3 过程中总结的经验整理如下,其他组件维护者也可以参考以下经验进行适配或者升级,更早适配升级到最新版本:

Jakarta EE

Jakarta EE 9 将所有API包名从javax.*命名空间变更到了jakarta.*。而造成这一变化的原因是Oracle拒绝交出相关权益,详情可以查看:https://www.oschina.net/news/106465/oracle-killed-java-ee。

因为Jakarta EE 的迁移,对于Web Apps,确保升级使用Tomcat 10, Jetty 11, or Undertow 2.2.19。

以下列出了一系列工具可以帮助你完成这部分的迁移:

移除META-INF/spring.factories文件对Auto-configuration的支持

Spring Boot 3.0移除了META-INF/spring.factories文件对Auto-configuration的支持,为了兼容性,SpringBoot 2.7.x 是最后一个支持的版本。

适配支持按照下面两个步骤即可完成

Step1: [可选] 使用 @AutoConfiguration 注解代替 [@Configuration(proxyBeanMethods ](/Configuration(proxyBeanMethods ) = false)

@AutoConfiguration 注解是SpringBoot 2.7中的新引入的注解,旨在专门标识Auto-configuraton class name。

依然使用@Configuration注解标识自动适配类也是可以的,Dubbo 正是基于这个便利点完美支持了Spring Boot 1.x、2.x、3.x所有版本。

Step2: 使用 AutoConfiguration.imports 文件代替 META-INF/spring.factories 文件

Spring Boot 2.7是最后一个依然兼容使用spring.factories 的版本,SpringBoot 3 以后不再兼容,此时您应该使用META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.i

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇maven 多模块项目的测试覆盖率分.. 下一篇解读Java内存模型中Happens-Befor..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目