網站首頁 編程語言 正文
上篇文章運用SpringCloud組件Eureka簡單寫了個服務注冊Demo,并用RestTemplate實現了服務之間的遠程調用,這篇文章則用到SpringCloud的另一個組件Feign來實現更方便更優雅的遠程調用。
首先引入maven依賴
<!-- feign客戶端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
接著需要在啟動類上加上@EnableFeignClients注解,開啟遠程調用功能
package com.wl.order;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
* @author wl
* @date 2022/3/4 14:22
*/
@EnableFeignClients
@MapperScan("com.wl.order.mapper")
@SpringBootApplication
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
System.out.println("o(* ̄▽ ̄*)o啟動成功!!!(〃'▽'〃)");
}
}
然后創建調用用戶模塊的接口
package com.wl.order.clients;
import com.wl.order.config.DefaultFeignConfiguration;
import com.wl.user.entiry.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
/**
* @author wl
* @date 2022/3/6 11:38
*/
@FeignClient(value = "user-service", configuration = DefaultFeignConfiguration.class)
public interface UserServiceClient {
@GetMapping("/user/{id}")
User getById(@PathVariable("id") Long id);
}
@FeignClient標簽的常用屬性如下:
name:指定FeignClient的名稱,如果項目使用了Ribbon,name屬性會作為微服務的名稱,用于服務發現
vaule和name 其實是一個屬性
url: url一般用于調試,可以手動指定@FeignClient調用的地址
decode404:當發生http 404錯誤時,如果該字段位true,會調用decoder進行解碼,否則拋出FeignException
configuration: Feign配置類,可以自定義Feign的Encoder、Decoder、LogLevel、Contract
fallback: 定義容錯的處理類,當調用遠程接口失敗或超時時,會調用對應接口的容錯邏輯,fallback指定的類必須實現@FeignClient標記的接口
fallbackFactory: 工廠類,用于生成fallback類示例,通過這個屬性我們可以實現每個接口通用的容錯邏輯,減少重復的代碼
path: 定義當前FeignClient的統一前綴,當我們項目中配置了server.context-path,server.servlet-path時使用
其中DefaultFeignConfiguration這個類里定義了feign的日志級別,級別可根據自身情況定義,一般BASIC即可。
package com.wl.order.config;
import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author wl
* @date 2022/3/6 13:57
*/
@Configuration
public class DefaultFeignConfiguration {
@Bean
public Logger.Level loggerLevel() {
return Logger.Level.BASIC;
}
}
本來參考黑馬程序員的視頻以為寫到這里就可以在控制臺看到feign的日志了,但結果卻不是,百度之后發現還要在配置文件里加上這一段
## 將Feign接口的日志級別設置成DEBUG,因為Feign的logger.Level只對DEBUG做出響應
logging:
level:
com.wl.order.clients.UserServiceClient: debug
到此,每次遠程調用即可輸出日志查看調用情況了
?
原文鏈接:https://blog.csdn.net/wl_Honest/article/details/123309949
相關推薦
- 2023-11-15 Latex文獻報錯 Something‘s wrong--perhaps a missing \it
- 2022-12-23 Android同步異步任務與多線程及Handler消息處理機制基礎詳細講解_Android
- 2022-04-20 超全整理visual?studio快捷鍵使用技巧_相關技巧
- 2022-11-12 python?鏡像環境搭建總結_python
- 2024-03-08 jdk版本不兼容 Error creating bean with name ‘springSecu
- 2022-09-24 Pytorch實現邏輯回歸分類_python
- 2022-03-30 Docker搭建RabbitMQ集群的方法步驟_docker
- 2022-12-24 c++類成員函數如何做函數參數_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支