作者介紹:計算機專業研究生,現企業打工人,從事Java全棧開發
主要內容:技術學習筆記、Java實戰項目、項目問題解決記錄、AI、簡歷模板、簡歷指導、技術交流、論文交流(SCI論文兩篇)
上點關注下點贊 生活越過越燦爛
新技術的出現肯定是解決目前存在的不足
存在問題
RestTemplate方式發起遠程調用的代碼:
String forObject = restTemplate.getForObject("http://order-service/order/add", String.class);
存在下面的問題:
- 代碼可讀性差,編程體驗不統一(還得需要寫url)
- 參數復雜URL難以維護
Feign的介紹
定義和使用Feign
場景:user-service
服務調用order-service
服務里的方法
做法:
需要在user-service
服務中編寫order-service
的feign客戶端
-
引入依賴
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>2.2.0.RELEASE</version> </dependency>
-
開啟自動裝配功能
在啟動類上面添加@EnableFeignClients注解
-
編寫feign客戶端
在user-service
中新建一個接口,內容如下:
這個客戶端主要是基于SpringMVC的注解來聲明遠程調用的信息,比如:
- 服務名稱:order-service
- 請求方式:GET
- 請求路徑:/order/add
- 請求參數:無
- 返回值類型:String
這樣,Feign就可以幫助我們發送http請求,無需自己使用RestTemplate來發送了。
-
測試
使用Feign客戶端代替RestTemplate:
總結:
使用Feign的步驟:
① 引入依賴
② 添加@EnableFeignClients注解
③ 編寫FeignClient接口
④ 使用FeignClient中定義的方法代替RestTemplate
同時Feign還實現負載均衡,可以通過看它的依賴看到ribbon