<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網易首頁 > 網易號 > 正文 申請入駐

      Spring 6 正式“拋棄” Feign

      0
      分享至

      Java精選面試題(微信小程序):5000+道面試題和選擇題,真實面經簡歷模版,包含Java基礎、并發、JVM、線程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架構設計、大廠真題等,在線隨時刷題!

      近期,Spring 6 的第一個 GA 版本發布了,其中帶來了一個新的特性——HTTP Interface。這個新特性,可以讓開發者將 HTTP 服務,定義成一個包含特定注解標記的方法的 Java 接口,然后通過對接口方法的調用,完成 HTTP 請求。看起來很像使用 Feign 來完成遠程服務調用,這可能是 Spring “拋棄” feign 等 http 調用的一種趨勢,Spring 要規范和簡化這一塊的實現了,讓開發者更關注聚集于業務。下面我們參考官方文檔來完成一個 Demo。

      完成一個 Demo

      首先創建一個簡單的 HTTP 服務,這一步可以創建一個簡單的 Spring Boot 工程來完成。

      先創建一個實體類:

      public class User implements Serializable {     private int id;     private String name;     // 省略構造方法、Getter和Setter     @Override     public String toString() {         return id + ":" + name;     } }

      再寫一個簡單的 Controller:

      @GetMapping("/users") public List   list() {     return IntStream.rangeClosed(1, 10)             .mapToObj(i -> new User(i, "User" + i))             .collect(Collectors.toList()); }

      確保啟動服務之后,能夠從http://localhost:8080/users地址獲取到一個包含十個用戶信息的用戶列表。

      下面我們新建一個 Spring Boot 工程。


      這里需要注意,Spring Boot 的版本至少需要是 3.0.0,這樣它以來的 Spring Framework 版本才是 6.0 的版本,才能夠包含 HTTP Interface 特性,另外,Spring Framework 6.0 和 Spring Boot 3.0 開始支持的 Java 版本最低是 17,因此,需要選擇至少是 17 的 Java 版本。

      另外,需要依賴 Spring Web 和 Spring Reactive Web 依賴,原因下文中會提到。

      創建好新的 Spring Boot 工程后,首先需要定義一個 HTTP Interface 接口。最簡單的定義如下即可:

      public interface UserApiService {     @GetExchange("/users")     List   getUsers(); }

      然后,我們可以寫一個測試方法。

      @Test void getUsers() {    WebClient client = WebClient.builder().baseUrl("http://localhost:8080/").build();    HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(client)).build();    UserApiService service = factory.createClient(UserApiService.class);    List users = service.getUsers();    for (User user : users) {       System.out.println(user);    } }

      最終回打印獲取到的是個用戶信息:

      1:User1 2:User2 ... 9:User9 10:User10

      以上是一個最簡單的示例,下面我們看看其中的一些細節。

      GetExchange(HttpExchange)注解

      上文例子中的 GetExchange 注解代表這個方法代替執行一個 HTTP Get 請求,與此對應,Spring 還包含了其他類似的注解:


      這些注解定義在spring-web模塊的org.springframework.web.service.annotation包下,除了 HttpExchange 之外,其他的幾個都是 HttpExchange 的特殊形式,這一點與 Spring MVC 中的 RequestMapping/GetMapping 等注解非常相似。

      以下是 HttpExchange 的源碼:

      @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @Mapping @Reflective(HttpExchangeReflectiveProcessor.class) public @interface HttpExchange {     @AliasFor("url")     String value() default "";     @AliasFor("value")     String url() default "";     String method() default "";     String contentType() default "";     String[] accept() default {}; }

      在上面的例子中,我們只指定了請求的資源路徑。

      UserApiService 實例的創建

      在上面例子中,我們定義的 HTTP Interface 接口是 UserApiService,在測試方法中,我們通過 HttpServiceProxyFactory 創建了 UserApiService 的實例,這是參考了 Spring 的官方文檔的寫法。

      你也可以將創建的過程寫到一個 @Bean 方法中,從而可以將創建好的實例注入到其他的組件中。

      我們再定義 UserApiService 的時候,只是聲明了一個接口,那具體的請求操作是怎么發出的呢,我們可以通過 DEBUG 模式看得出來,這里創建的 UserApiService 的實例,是一個代理對象:


      目前,Spring 還沒有提供更方便的方式來創建這些代理對象,不過,之后的版本肯定會提供,如果你感興趣的話,可以從 HttpServiceProxyFactory 的createClient方法的源碼中看到一些與創建 AOP 代理相似的代碼,因此,我推測 Spring 之后可能會增加類似的注解來方便地創建代理對象。

      其他特性

      除了上述例子中的簡單使用之外,添加了 HttpExchange 的方法還支持各種類型的參數,這一點也與 Spring MVC 的 Controller 方法類似,方法的返回值也可以是任意自定義的實體類型(就像上面的例子一樣),此外,還支持自定義的異常處理。

      為什么需要 Spring Reactive Web 的依賴

      上文中創建工程的時候,引入了 Spring Reactive Web 的依賴,在創建代理的service對象的時候,使用了其中的 WebClient 類型。這是因為,HTTP Interface 目前只內置了 WebClient 的實現,它屬于 Reactive Web 的范疇。Spring 在會在后續版本中推出基于 RestTemplate 的實現。

      總結

      本文帶你對 HTTP Interface 特性進行了簡單的了解,我之后會深入研究這個特性,也會追蹤后續版本中的改進并與你分享,歡迎點贊加關注。

      來源:https://juejin.cn/post/7173271507047546893

      公眾號“Java精選”所發表內容注明來源的,版權歸原出處所有(無法查證版權的或者未注明出處的均來自網絡,系轉載,轉載的目的在于傳遞更多信息,版權屬于原作者。如有侵權,請聯系,筆者會第一時間刪除處理!

      最近有很多人問,有沒有讀者交流群!加入方式很簡單,公眾號Java精選,回復“加群”,即可入群!

      文章有幫助的話,點在看,轉發吧!

      特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      大連旅順一座老塔剛傳出要拆,日本立馬跳腳,開口就討“廢料”

      大連旅順一座老塔剛傳出要拆,日本立馬跳腳,開口就討“廢料”

      百態人間
      2025-12-19 16:48:22
      華子轟26+12仍無緣今日最佳!對不起,你碰到不講理的文班亞馬了

      華子轟26+12仍無緣今日最佳!對不起,你碰到不講理的文班亞馬了

      世界體育圈
      2025-12-20 13:38:48
      “成都27歲女子家門口被殺案”宣判,法院認為被告人行為不構成自首

      “成都27歲女子家門口被殺案”宣判,法院認為被告人行為不構成自首

      澎湃新聞
      2025-12-20 15:06:27
      “英國關之琳”閃婚大25歲白頭大叔,全網崩潰:垃圾堆里找男人?

      “英國關之琳”閃婚大25歲白頭大叔,全網崩潰:垃圾堆里找男人?

      陳天宇
      2025-12-20 00:04:13
      臺北市長蔣萬安將赴上海,行程曝光

      臺北市長蔣萬安將赴上海,行程曝光

      第一財經資訊
      2025-12-19 21:59:17
      小米17 Ultra代號夜神 盧偉冰:絕對是最強Ultra

      小米17 Ultra代號夜神 盧偉冰:絕對是最強Ultra

      快科技
      2025-12-20 22:58:07
      楊晨成國安新帥最大黑馬!球迷呼吁名宿回歸,德甲背景成關鍵優勢

      楊晨成國安新帥最大黑馬!球迷呼吁名宿回歸,德甲背景成關鍵優勢

      光輝與陰暗
      2025-12-20 23:57:45
      碾壓,曼城英超對陣西漢姆聯已連續20場不敗+7連勝

      碾壓,曼城英超對陣西漢姆聯已連續20場不敗+7連勝

      懂球帝
      2025-12-21 01:17:58
      邢自強:如果房地產不實現止跌回穩,很難打破消費疲軟等問題

      邢自強:如果房地產不實現止跌回穩,很難打破消費疲軟等問題

      新浪財經
      2025-12-18 15:48:03
      陳志的可怕,不在他有多狠,而在于他一路順風順水

      陳志的可怕,不在他有多狠,而在于他一路順風順水

      熱點菌本君
      2025-11-10 15:45:57
      2025國劇最高分!《反人類暴行》豆瓣開分8.5

      2025國劇最高分!《反人類暴行》豆瓣開分8.5

      新京報
      2025-12-19 17:46:22
      驚心動魄!60歲老人因意外“頭頸分離”直送ICU,經廣州醫生搶救獲重生

      驚心動魄!60歲老人因意外“頭頸分離”直送ICU,經廣州醫生搶救獲重生

      極目新聞
      2025-12-20 08:38:15
      網友們終于把蒸汽機發明這事給理明白了

      網友們終于把蒸汽機發明這事給理明白了

      清暉有墨
      2025-11-24 14:01:50
      早就想打!日媒首次爆料:中國雙航母出動時日軍戰機已做戰斗準備

      早就想打!日媒首次爆料:中國雙航母出動時日軍戰機已做戰斗準備

      詩意世界
      2025-08-21 13:13:50
      國際足聯官宣,登貝萊再破天花板,讓梅西和整個體壇都“沉默”了

      國際足聯官宣,登貝萊再破天花板,讓梅西和整個體壇都“沉默”了

      負面黑洞
      2025-12-20 07:31:41
      摩爾線程發布新一代GPU架構“花港”:能效提升10倍,支持十萬卡以上智算集群

      摩爾線程發布新一代GPU架構“花港”:能效提升10倍,支持十萬卡以上智算集群

      澎湃新聞
      2025-12-20 10:48:26
      俄羅斯沒想到,美國更沒想到,如今的中國石油,成為石油遙遙領先

      俄羅斯沒想到,美國更沒想到,如今的中國石油,成為石油遙遙領先

      生活新鮮市
      2025-12-20 16:24:32
      荷蘭不給晶圓,聞泰有新招

      荷蘭不給晶圓,聞泰有新招

      觀察者網
      2025-12-20 08:36:14
      連場轟20+!中國女籃26歲2米王牌閃耀:升聯盟第2,宮帥招她嗎?

      連場轟20+!中國女籃26歲2米王牌閃耀:升聯盟第2,宮帥招她嗎?

      李喜林籃球絕殺
      2025-12-20 16:09:28
      中日交惡,錯在中方?第二個指責我國的出現,點名中國用詞激烈

      中日交惡,錯在中方?第二個指責我國的出現,點名中國用詞激烈

      肖茲探秘說
      2025-11-25 13:12:05
      2025-12-21 01:51:00
      Java精選
      Java精選
      一場永遠也演不完的戲
      1764文章數 3859關注度
      往期回顧 全部

      科技要聞

      許四清:具身智能的"ChatGPT時刻"還未到來

      頭條要聞

      印度官員:若"臺灣有事" 印度不太可能像西方那樣回應

      頭條要聞

      印度官員:若"臺灣有事" 印度不太可能像西方那樣回應

      體育要聞

      我開了20年大巴,現在是一名西甲主帥

      娛樂要聞

      2026央視跨年晚會陣容曝光,豪華陣仗

      財經要聞

      求解“地方財政困難”

      汽車要聞

      嵐圖推進L3量產測試 已完成11萬公里實際道路驗證

      態度原創

      藝術
      數碼
      手機
      親子
      公開課

      藝術要聞

      投資26億!廣州“獨角獸”的總部大樓,躍出地面!

      數碼要聞

      50歲了!長虹第一臺彩電入駐中國國家博物館

      手機要聞

      vivo X200T再曝,天璣 9400+芯片加持

      親子要聞

      邊牧和德牧帶娃在外面挖坑,三個小朋友加起來800個心眼子!

      公開課

      李玫瑾:為什么性格比能力更重要?

      無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 91制片厂天美传媒网站进入| 久久性色欲av免费精品观看| 日韩人妻成人| 不卡黄片| 国产suv精品一区二区69| 亚欧精品人妻| 色www88| 精品无码国产一区二区三区AV| 蜜臀av色欲a片无码精品一区| 欧美牲交a欧美牲交aⅴ免费真| 久久成人影院精品777| 深爱色情网| 国产日韩av二区三区| 色av综合av综合无码网站| 南安市| 四虎在线成人免费观看| 精品国产一区二区三区不卡| 成人影片一区免费观看| 91在线一区| 国产午夜精品久久精品电影 | 欧美裸体xxxx极品| 国产精品自在在线午夜免费| 久久99国产精品久久99| 婷婷综合久久| 亚洲熟妇在线视频观看| 欧美疯狂性受xxxxx喷水| 午夜精品一区二区三区免费视频| 金典黄色网| 激情久久久| 日韩在线视频观看免费网站| 国产热の有码热の无码视频| 伊人a?v| caopor在线| 人妻丝袜| 中文无码人妻有码人妻中文字幕| 99国产精品久久久久久久日本竹| 久久96| 日日夜夜人人| 久久精品熟妇丰满人妻99 | 久久香综合精品久久伊人| 无码人妻精品一区二区三 |