91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Spring Cloud Tencent發布最新匹配版本!

OSC開源社區 ? 來源:OSC開源社區 ? 作者:張樂、張皓天 ? 2022-12-09 15:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Spring Framework 6.0 已于11月份上旬正式發布 GA 版本。Spring Boot 3.0 也于11月25日正式發布 GA 版本。那么 Spring Cloud 2022 它還遠嗎?

前言

Java 8 目前是國內主流生產環境 Java 版本之一。雖然近幾年陸續發布了 Java 11、Java 17 官方 LTS 版本,但是 你發任你發,我用Java8 的聲音反應了大部分開發者的心聲。不過 Java 17 版本在性能上做了大量的優化特別是 ZGC 的發布,促進了國內不少企業升級到 Java 17。

Spring 在 Java 語言的作用不言而喻,Spring Framework 5.0 發布已至今五年,是時候需要一個大的版本來革新技術棧了。借著 Java 17 的東風我們認為

“Java 17 + Spring Framework 6.0 + Spring Boot 3.0 + Spring Cloud 2022”

組合一定會在不久的將來被大家所接受,成為主流技術棧。當然任何新技術大規模被認可、落地都會有一定的滯后性,技術的發展 “穩”字當頭。

Spring Cloud Tencent 是基于騰訊開源的一站式微服務平臺北極星(集服務注冊發現、配置中心、服務限流熔斷、服務路由于一身)實現的 Spring Cloud 微服務解決方案套件。真正做到 “All In One”、 開箱即用,極大的降低企業的微服務實踐門檻。

無論北極星還是 Spring Cloud Tencent 當前都在積極的修復 Bug、完善用戶體驗、迭代新功能。所以 Spring Cloud Tencent 也第一時間適配了 Spring Cloud 2022。此篇文章詳細講述了 Spring Cloud Tencent 從 2021 版本升級到 2022 版本的改動點。為嘗鮮 2022 版本的廣大開發者提供一些參考。

一、升級過程

1.1 升級安裝 JDK 17

Oracle 官網下載 JDK 17 并安裝。安裝之后,本地修改 JAVA_HOME 環境變量,如下所示:

#echo$JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-17.0.5.jdk/Contents/Home
#java-version
javaversion"17.0.5"2022-10-18LTS
Java(TM)SERuntimeEnvironment(build17.0.5+9-LTS-191)
JavaHotSpot(TM)64-BitServerVM(build17.0.5+9-LTS-191,mixedmode,sharing)

安裝好 JDK 17 之后,同時需要在 Idea 里設置項目的編譯和運行環境為 SDK 17。

1.2 升級依賴版本

Spring Cloud Tencent 項目引用的 Parent Pom 是 spring-cloud-build,所以需要升級到最新版本。

<parent>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-buildartifactId>
<version>4.0.0-RC2version>
<relativePath/>
parent>

可以看到 Spring-cloud-build 4.0.0-RC2 版本里定義的 Java 和 Spring Boot 版本已是最新的 Java 17 和 Spring Boot 3.0

<properties>
<java.version>17java.version>
<spring-boot.version>3.0.0-RC2spring-boot.version>
properties>

普通項目一般不需要繼承 spring-cloud-build ,而是通過 bom 的方式引入 Spring 全家桶。如果你的項目里定義了 Java、Spring Framework、Spring Boot、Spring Cloud 版本則需要同時升級。如下所示:

<properties>
<java.version>17java.version>
<spring.framework.version>6.0.1spring.framework.version>
<spring-boot.version>3.0.0spring-boot.version>
<spring.cloud.version>2022.0.0-RC2spring.cloud.version>
properties>
<dependencyManagement>
<dependencies>

<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-framework-bomartifactId>
<version>${spring.framework.version}version>
<type>pomtype>
<scope>importscope>
dependency>


<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-dependenciesartifactId>
<version>${spring.boot.version}version>
<type>pomtype>
<scope>importscope>
dependency>


<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>${spring.cloud.version}version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>

注意:Spring 非 GA 版本會先發布到 Spring 自己的 Maven 倉庫,而不會發布到中央倉庫。所以如果拉不到包,則需要在項目根 Pom 或者本地 ~/.m2/settings.xml 里配置 Spring Maven 倉庫。

<repositories>
<repository>
<id>nexus-snapshotsid>
<url>https://oss.sonatype.org/content/repositories/snapshots/url>
<releases>
<enabled>falseenabled>
releases>
<snapshots>
<enabled>trueenabled>
snapshots>
repository>
<repository>
<id>spring-snapshotsid>
<name>SpringSnapshotsname>
<url>https://repo.spring.io/snapshoturl>
<snapshots>
<enabled>trueenabled>
snapshots>
<releases>
<enabled>falseenabled>
releases>
repository>
<repository>
<id>spring-milestonesid>
<name>SpringMilestonesname>
<url>https://repo.spring.io/milestoneurl>
<snapshots>
<enabled>falseenabled>
snapshots>
repository>
repositories>

在升級過程中,大概率會出現包沖突的情況,例如 SCT 在升級過程中發現日志依賴有問題導致 example 啟動失敗。最后排查到原因:SCT 自己定義了 logback版本為 1.2.11,但是升級 Spring Boot 3.0 里傳遞依賴的版本為 1.4.5,所以導致版本沖突。最后解決方案就是把 SCT 定義的版本去掉,只用傳遞依賴的版本。

Tips:解決版本沖突大概率會占用比較多的時間,升級過程需要有耐心

1.3 修改不兼容代碼

javax 包替換為 jakarta 包

這是Java17 最大變更點之一,代碼所有 import javax 都要替換為 jakarta編譯不通過的地方直接通過 Idea 自動導入的方式變更即可。

spring-web 6.0 不兼容升級

SCT 在升級過程中發現 spring-web 包下有些 API 不兼容,例如 ClientHttpResponse.getStatusCode() 老版本返回 HttpStatus,新版本返回的是 HttpStatusCode,改動量很小。

AutoConfiguration 自動裝配方式變更

在 Spring Boot 3.0 以前的版本,通過在 META-INF/spring.factories 文件中定義需要自動裝配類,Spring Boot 在啟動過程中就會執行裝配 Bean,如下所示:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.tencent.cloud.plugin.pushgateway.PolarisStatPushGatewayAutoConfiguration

但是在 Spring Boot 3.0 中,則是通過在

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

文件定義需要自動裝配的類。所以遷移過程就是把org.springframework.boot.autoconfigure.EnableAutoConfiguration 下配置的類都放到新的文件中。

這里需要注意的是原來在 spring.factories 可以定義多種類型的自動裝配例如:

  1. org.springframework.boot.autoconfigure.EnableAutoConfiguration
  2. org.springframework.cloud.bootstrap.BootstrapConfiguration
  3. org.springframework.context.ApplicationListener
  4. ... ...

只需要把 org.springframework.boot.autoconfigure.EnableAutoConfiguration 部分遷移到 org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件,其它部分還是放在 spring.factories 中無需遷移。

至此 SCT 2022 升級適配工作即已完成,可以看出升級工作量不大。

1.4 升級總結

SCT 屬于比較底層的基礎組件依賴的第三方庫少,所以整體適配工作量少。如果您的應用是上層業務應用依賴了大量的組件,例如:spring-security、spring-stream等。那升級的成本也會高很多。

下面是 github 網友 @herodotus-cloud 總結的升級關鍵點:

  1. 更換 JDK 17 后,少部分第三方依賴包版本選擇和控制問題
  2. 新依賴包過時代碼替換。大多數沒問題,就怕遇到像 spring security 6 用法的變化
  3. starter 自動配置注冊格式不同導致的,大多數第三方依賴都倒在這里
  4. 最怕的就是核心機制的變化,比如說反射。好像一些反射在 JDK 17 會有問題
  5. 最大的問題就是基礎設置組件升級不同步或者緩慢問題,比如依賴的某個 SDK 沒有升級 SDK 17,如果傳遞依賴了就會導致編譯問題。
  6. 如果還要考慮向下的兼容性,怕就難了

Spring 官方建議先升級到 Spring Boot 2.7 小版本,然后再升級到 Spring Boot 3.0 版本。通過小步升級的方式,可以更加的平滑。

二、嘗鮮使用 Spring Cloud Tencent 2022.0 版本

Spring Cloud Tencent 1.8.1-2022.0.0 版本已發布。通過引入 SCT BOM 的方式即可引入,如下所示:

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.tencent.cloudgroupId>
<artifactId>spring-cloud-tencent-dependenciesartifactId>
<version>1.8.1-2022.0.0-RC2version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>

在此解釋一下 SCT 的版本號規則,版本號分為兩段:

{對應的 Spring Cloud 版本}

SCT 版本號在各個 Spring Cloud 版本之間對齊,例如 1.8.1-Hoxton.SR12 和 1.8.1-2021.0.3 ,SCT 版本號都是 1.8.1,功能完全對齊,只是引用的 Spring Cloud 不同。版本號中引入 Spring Cloud 版本為了一眼就能識別 Spring Cloud 版本對應關系。開發者優先選擇跟自己版本一致的 Spring Cloud 版本,再選擇最新的 SCT 版本。

使用 SCT 各個子模塊的功能,請參考 SCT Github Wiki 文檔。

三、 呼吁

第三方基礎組件的升級節奏會直接影響上層應用的升級,在此也呼吁第三方基礎組件的維護者能夠盡快跟進適配。為廣大愿意嘗鮮的開發者和企業提供便利。

四、歡迎共建

如果您對微服務、Spring Cloud 技術感興趣,歡迎加入我們。您的一個建議、Issue、Pull Request 甚至只是一個小小的 Star 都是對 Spring Cloud Tencent 社區極大的支持。

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    20

    文章

    2989

    瀏覽量

    109723
  • Oracle
    +關注

    關注

    2

    文章

    300

    瀏覽量

    36063
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    15078

原文標題:緊跟Spring Boot 3生態,Spring Cloud Tencent發布最新匹配版本!

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何使用nRF Cloud

    Nordic Semiconductor云服務和nRF Cloud構成了一個專為Nordic Semiconductor無線設備優化的物聯網平臺。該平臺為使用Nordic Semiconductor
    的頭像 發表于 07-04 11:12 ?196次閱讀
    如何使用nRF <b class='flag-5'>Cloud</b>

    NVIDIA推出AI平臺DGX Cloud Lepton

    CoreWeave、Crusoe、Firmus、Foxconn、GMI Cloud、Lambda、Nebius、Nscale、SoftBank Corp. 和 Yotta Data Services 為 DGX Cloud Lepton Marketplace 提供數以萬
    的頭像 發表于 05-22 09:42 ?359次閱讀

    nRF Cloud Wi-Fi 定位服務

    nRF Cloud 提供的定位服務專為 Nordic 硅芯片量身定制,具有快速、省電的定位功能。它們可以幫助需要定位數據而又不需要高功耗的設備和應用。提供多種定位技術,包括 Assisted-GPS
    發表于 04-17 15:07

    燧原科技正式納入飛槳例行版本發布體系

    燧原科技與飛槳經過長時間的適配合作和持續集成(CI)建設,對飛槳合?的每?行代碼都在燧原硬件上進?了驗證。如今,燧原正式納入飛槳例行版本發布體系。未來,燧原將基于這?合作模式,共同?持飛槳重大版本
    的頭像 發表于 04-11 11:31 ?479次閱讀
    燧原科技正式納入飛槳例行<b class='flag-5'>版本</b><b class='flag-5'>發布</b>體系

    芯來科技發布Nuclei Studio 2025.02版本

    Studio 2025.02版本發布了以下功能特性: 集成Nuclei RISC-V Toolchain /OpenOCD /QEMU /Xlmodel 2025.02版本
    的頭像 發表于 03-05 17:43 ?1112次閱讀
    芯來科技<b class='flag-5'>發布</b>Nuclei Studio 2025.02<b class='flag-5'>版本</b>

    GPU-Z迎來2.62 版本的更新發布

    近日,GPU-Z 迎來了 2.62 版本的更新發布。此次更新,主要是為了適配英偉達最新推出的 RTX 50 系列顯卡,為用戶提供更全面、準確的硬件信息。 在新發布的 2.62 版本中,
    的頭像 發表于 02-05 15:33 ?668次閱讀

    重磅發布 | 信息發布系統iOS版本正式上線!

    信息發布系統是一款集成了多種功能的強大工具,旨在幫助用戶高效地管理和發布信息。無論是企業公告、校園通知,還是社區消息,我們都能為您提供便捷的解決方案。ETV信息發布系統/多應用展示1ios版本
    的頭像 發表于 01-14 18:19 ?1039次閱讀
    重磅<b class='flag-5'>發布</b> | 信息<b class='flag-5'>發布</b>系統iOS<b class='flag-5'>版本</b>正式上線!

    Google Cloud發布兩款針對企業客戶的全新解決方案

    Google Cloud 近期發布兩款專為企業客戶設計的全新解決方案——Google Agentspace與NotebookLM Plus,目的是通過 Gemini 先進的推理能力、Google 高質量的搜索功能,以及無論存儲在何處的企業數據,將企業的專業知識提供給所有員
    的頭像 發表于 12-27 16:31 ?773次閱讀

    FreeCad 1.0 版本正式發布

    ,FreeCAD 終于在 2024 年 11 月 20 日正式發布了 1.0 版本。 ? ” 先來段小視頻,看看 FreeCAD 可以干什么: 以下內容部分引用自: https
    的頭像 發表于 12-03 01:02 ?2468次閱讀
    FreeCad 1.0 <b class='flag-5'>版本</b>正式<b class='flag-5'>發布</b>

    手寫圖像模板匹配算法在OpenCV中的實現

    OpenCV中的模板匹配是支持基于NCC相似度查找的,但是不是很好用,一個主要的原因是查找最大閾值,只能匹配一個,自己比對閾值,又導致無法正確設定閾值范圍,所以問題很多。于是我重新寫了純Python版本的NCC圖像模板
    的頭像 發表于 11-11 10:12 ?769次閱讀
    手寫圖像模板<b class='flag-5'>匹配</b>算法在OpenCV中的實現

    Spring事務實現原理

    作者:京東零售 范錫軍 1、引言 springspring-tx模塊提供了對事務管理支持,使用spring事務可以讓我們從復雜的事務處理中得到解脫,無需要去處理獲得連接、關閉連接、事務提交和回滾等
    的頭像 發表于 11-08 10:10 ?1156次閱讀
    <b class='flag-5'>Spring</b>事務實現原理

    Commvault Cloud平臺提供Cloud Rewind功能

    混合云企業網絡彈性和數據保護解決方案領先提供商Commvault(納斯達克代碼:CVLT)宣布在Commvault Cloud平臺上提供Cloud Rewind功能。這項獨特的產品集成了通過收購
    的頭像 發表于 10-15 09:21 ?694次閱讀

    Spring Cloud Gateway網關框架

    SpringCloud Gateway功能特征如下: (1) 基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0 進行構建; (2) 動態路由:能夠匹配任何請求屬性;
    的頭像 發表于 08-22 09:58 ?730次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Cloud</b> Gateway網關框架

    請問Mesh網絡是不是只能連接官方Espressif Cloud

    請問,Mesh網絡是不是只能連接官方Espressif Cloud?可以在其他云平臺上使用嗎? 謝謝?
    發表于 07-22 07:47

    在哪里可以看一下RainMaker Cloud的后端系統?

    請問下,在哪里可以看一下RainMaker Cloud的后端系統? 另外,RainMaker cloud是否提供服務器端的OPEN API,我們希望RainMaker cloud能夠跟我們現有的系統進行對接。
    發表于 07-19 08:20
    主站蜘蛛池模板: 很黄很污小说 | 午夜影视啪啪免费体验区深夜 | 伊人久久大香线蕉影院95 | 久久在线精品 | 毛片站| 免费人成黄页在线观看1024 | 一级欧美在线的视频 | 91色视 | 狠狠色噜狠狠狠狠色综合久 | 欧美一级特黄aaaaaa在线看首页 | 四虎新网站 | 三级在线网站 | 日本亚洲高清乱码中文在线观看 | 男人天堂bt | 最新亚洲人成网站在线影院 | 久久国产精品无码网站 | 欧美天天射 | 黄色大秀 | 久久国产影视 | 爽爽爽爽爽爽a成人免费视频 | 一女多夫嗯啊高h | 性孕妇洗澡video国产 | 免费看又爽又黄禁片视频1000 | va在线观看 | 羞羞答答xxdd影院欧美 | 欧美不卡一区 | 欧美一级视频在线观看欧美 | 成人在线一区二区 | 日韩大尺度视频 | 色妞干网| 午夜在线网站 | 日韩欧美中文字幕在线播放 | 人人干人人爽 | 亚洲一区二区三区首页 | 日日操夜夜 | 欧美成人午夜 | 成人综合婷婷国产精品久久免费 | 国产黄视频在线观看 | 操一操干一干 | 亚洲国产色婷婷精品综合在线观看 | 在线播放 你懂的 |