成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

還在用 OpenFeign?來試試 SpringBoot3 中的這個新玩意!

網絡 通信技術
用過 Spring Cloud 的小伙伴都知道,在 Spring Cloud 家族中,負責進程間通信的,我們可以使用 RestTemplate 或者 OpenFeign(當然也有其他方式如基于消息中間件的消息驅動的微服務或者基于 gRPC 的調用等)。

年過完啦,松哥也已經搬磚搬了三天了。

疫情放開后,今年這個年格外的輕松愜意,心中一種特別壓抑的東西被除去了,新聞中看到各地游人如織、西安大唐不夜城游人摩肩接踵,真的好像回到了 2019 年一樣,朋友圈中也都是喜氣洋洋,生活還是很美好的。

好久沒發技術文章了,最近回到工作地,晚上有空又可以碼碼技術了,今天我們就來聊一個 Spring Boot3 中的新鮮玩意,聲明式 HTTP 調用。

1. 由來

Spring Boot3 去年底就已經正式發布,我也嘗了一把鮮,最近有空會和小伙伴們慢慢聊聊 Spring Boot3 都給我們帶來了哪些新東西。

今天我們就先來看看聲明式 HTTP 接口。

用過 Spring Cloud 的小伙伴都知道,在 Spring Cloud 家族中,負責進程間通信的,我們可以使用 RestTemplate 或者 OpenFeign(當然也有其他方式如基于消息中間件的消息驅動的微服務或者基于 gRPC 的調用等)。

RestTemplate 我們可以將之當作一個普普通通的 HTTP 調用工具來對待,區別于其他的 HTTP 客戶端,RestTemplate 用來調用 RESTful 風格的接口特別方便。

不過,比 RestTemplate 更加方便的是 OpenFeign,通過接口聲明就可以實現遠程調用,這些的具體用法松哥在之前的視頻中講過,這里就不再贅述了。

以前我們想要用聲明式 HTTP 調用,需要通過 OpenFeign 來實現,這個需要第三方的依賴,從 Spring6 開始(Spring Boot3),Spring 自己提供了類似的功能通過 @HttpExchange 注解也能方便的實現 聲明式 HTTP 調用。以后跨服務調用又多了一個選擇。

2. 使用

接下來松哥通過一個案例來和小伙伴們演示一下 @HttpExchange 注解的具體玩法。

首先我們先創建一個普通的名為 server 的 Spring Boot 項目,這個普通的 Spring Boot 項目中只需要提供一個簡單的測試接口即可,如下:

@RestController
public class HelloController {

@GetMapping("/server/hello")
public String hello(String name){
return "hello " + name;
}

}

這個對大家來說應該是沒什么難度的,我就不多說了。

現在假設我有另外一個服務名為 client,我想在 client 中調用 server 中提供的這個接口。

首先我們來創建 client 這個項目,大家注意,創建的時候我們不僅需要添加 Web 依賴,還需要 Reactive Web,因為這個 @HttpExchange 底層基于 WebClient,而 WebClient 則是 Reactive Web 提供的:

圖片

創建完成后,接下來我們就可以聲明 Http 接口了:

@HttpExchange("/server")
public interface ToDoService {
@GetExchange("/hello")
String hello(@RequestParam String name);
}

這些用法跟我們在 SpringMVC 中常用的 @RequestMapping 和 @GetMapping 等特別類似:

  • @HttpExchange? 類似于 @RequestMapping,可以將之放在類上,起到一個請求窄化的作用,也可以放在方法上,放在方法上我們可以通過 method 屬性來指定具體的請求方法,這個也跟 @RequestMapping 類似:@HttpExchange(value = "/server",method = "GET")。
  • @GetExchange? 類似于 @GetMapping,這個就不再贅述了,其他類似的注解還有 @DeleteExchange、@PatchExchange、@PostExchange、@PutExchange 等。
  • 另外需要注意的是請求方法的參數需要加上@RequestParam 注解,這一點和 OpenFeign 比較類似。

接口聲明好之后還沒完,我們還需要配置一下才能使用。如下:

@Configuration
public class WebConfig {
@Bean
WebClient webClient(){
return WebClient.builder()
.baseUrl("http://localhost:8080")
.build();
}
@Bean
ToDoService toDoService(){
HttpServiceProxyFactory httpServiceProxyFactory =
HttpServiceProxyFactory.builder(WebClientAdapter.forClient(webClient()))
.build();
return httpServiceProxyFactory.createClient(ToDoService.class);
}
}

這個配置主要是兩方面:

  1. @HttpExchange? 是基于 WebClient 的,所以我們首先需要配置 WebClient,配置 WebClient 的時候,也順便配置了請求的具體地址(因為在 @HttpExchange 
  2. 由于我們前面提供的 ToDoService 是一個接口,所以我們還需要提供一個該接口的實現類,當然這個配置完全是套路化模版化的,這塊就沒啥好說了。

全部配置完成后,接下來我們就可以在任何需要的地方,直接注入 ToDoService 的實例去使用了,舉一個簡單的例子小伙伴們參考下:

@SpringBootTest
class ClientApplicationTests {

@Autowired
ToDoService toDoService;

@Test
void contextLoads(){
String hello = toDoService.hello("javaboy");
System.out.println("hello = " + hello);
}

}

好啦,一個簡單的例子,小伙伴們不妨體驗下。

以后,不用 OpenFeign 也能實現聲明式服務調用啦~

責任編輯:武曉燕 來源: 江南一點雨
相關推薦

2023-06-19 08:05:17

RFCwebSpring

2021-01-27 11:36:34

代碼開發工具

2023-08-07 14:28:07

SpringBoot工具

2021-01-03 17:14:16

ORMObjective S運行

2024-03-26 10:30:37

Mybatis擴展庫API

2016-09-23 18:32:42

iTunesIOS 10蘋果

2023-08-09 08:29:51

SpringWeb編程

2020-07-10 12:06:28

WebpackBundleless瀏覽器

2021-04-21 10:36:47

StringBuildJava8StringJoine

2015-01-23 10:45:23

2020-07-29 10:55:07

數據庫工具技術

2020-08-25 08:03:59

測試Sharness結構

2023-08-11 08:59:49

分庫分表數據數據庫

2023-08-15 08:42:41

2012-07-19 10:03:32

2024-10-08 08:26:43

2022-06-24 08:20:56

requests爬蟲Python

2022-06-17 11:10:43

PandasPolarsPython

2009-03-03 12:51:14

DEMO09移動技術外電

2020-11-04 16:34:45

單元測試技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人免费视频网站在线看 | 少妇精品亚洲一区二区成人 | 三级黄色网址 | 欧美久久精品一级黑人c片 91免费在线视频 | 欧美在线高清 | 国产高潮av| 亚洲精品一级 | a视频在线观看 | 狠狠色综合久久婷婷 | 国产精品福利网站 | 九九综合| 欧美精品一区在线发布 | 欧美成人精品激情在线观看 | 国产一级片在线观看视频 | 国产精品久久久久久一区二区三区 | 中文成人在线 | 精品福利在线视频 | 久久综合一区二区三区 | 国产精品99久久久久久宅男 | 日韩三级在线 | 亚洲精品一区国语对白 | 国产一区不卡 | 午夜精品一区二区三区在线视 | 午夜视频在线 | 日韩区| 中文字幕一区二区视频 | 婷婷综合网 | 美女福利网站 | 国产精品毛片久久久久久 | 欧美视频在线看 | 久久亚洲二区 | 99视频在线| 国产亚洲一区二区精品 | 婷婷午夜天 | 久久国产精品偷 | 欧产日产国产精品视频 | 欧美视频 亚洲视频 | 国产中文字幕在线观看 | 国产成人精品一区二区三区在线 | 91美女在线 | 欧美精品在线播放 |