一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringCloudAlibaba整合Feign實現遠程HTTP調用的簡單示例

SpringCloudAlibaba整合Feign實現遠程HTTP調用的簡單示例

2022-01-20 00:54Maggieq8324 Java教程

這篇文章主要介紹了SpringCloudAlibaba 整合 Feign 實現遠程 HTTP 調用,文章中使用的是OpenFeign,是Spring社區開發的組件,需要的朋友可以參考下

前言

FeignNetflix開源的聲明式HTTP客戶端,致力于讓編寫http client更加簡單,Feign可以通過聲明接口自動構造請求的目標地址完成請求

環境

Spring Cloud Hoxton.SR9 + Spring Cloud Alibaba 2.2.6.RELEASE
FeignNetflix公司產品,目前已停止更新,文章中使用的是OpenFeign,是Spring社區開發的組件

 

簡單示例

content-center pom.xml

<!-- openfeign -->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

啟動類ContentCenterApplication.java

@EnableFeignClients
public class ContentCenterApplication {
}

TestController.java

import com.coisini.contentcenter.feignclient.TestFeignClient;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class TestController {

   private final TestFeignClient testFeignClient;

	/**
   * 整合Feign
   * @return
   */
  @GetMapping("test4")
  public String test4() {
      return testFeignClient.test("Coisini");
  }
  
}

TestFeignClient.java

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
* @FeignClient(name = "user-center") 
* name 要請求的微服務的名稱
*/
@FeignClient(name = "user-center")
public interface TestFeignClient{

  /**
   * test接口被調用時,feign會構造出 url
   * http://user-center/test/{name} 完成請求
   * @param name
   * @return
   */
  @GetMapping("/test/{name}")
  String test(@PathVariable String name);

}

user-center TestController.java

@RestController
@Slf4j
public class TestController {

  @GetMapping("/test/{name}")
  public String test(@PathVariable String name) {
      log.info("請求...");
      return "hello " + name;
  }

}

示例測試結果

SpringCloudAlibaba整合Feign實現遠程HTTP調用的簡單示例


…至此,已完成Feign的整合

 

Feign 的組成和支持的配置項

Feign 的組成

接口 作用 默認值
Feign.Builder Feign的入口 Feign.Builder
Client Feign底層請求方式 和Ribbon配合時 LoadBalancerFeignClient
不和Ribbon配合時 feign.Client.Default
Contract 契約,注解支持 SpringMvcContract
Encoder 編碼器,用于將對象轉換成HTTP請求消息體 SpringEncoder
Decoder 解碼器,將響應消息轉換成對象 ResponseEntityDecoder
Logger 日志管理器 Slf4jLogger
RequestInterceptor 用于為每個請求添加通用邏輯

Feign 支持的配置項

配置項 作用
Logger.Level 指定日志級別
Retryer 指定重試策略
ErrorDecoder 指定錯誤解碼器
Request.Options 超時時間
Collection< RequestInterceptor> 攔截器
SetterFactory 用于設置Hystrix的配置屬性,整合Hystrix才會生效

配置屬性支持的配置項

feign.client.config: 
<feignName>:
  connectTimeout: 5000 # 連接超時時間
  readTimeout: 5000 # 讀取超時時間
  loggerLevel: full # 日志級別
  errorDecoder: com.example.SimpleErrorDecoder # 錯誤解碼器
  retryer: com.example.SimpleRetryer # 重試策略
  requestInterceptors: com.example.FooRequestInterceptor # 攔截器
  decode404: false # 是否對404錯誤碼解碼
  encoder: com.example.SimpleEncoder # 編碼器
  decoder: com.example.SimpleDecoder # 解碼器
  contract: com.example.SimpleContract # 契約

 

Feign 的日志

Feign 的日志級別

feign默認不打印任何日志

級別 打印內容
NONE(默認值) 不記錄任何日志
BASIC 僅記錄請求方法、URL、響應狀態代碼以及執行時間
HEADERS BASIC級別的基礎上,記錄請求和響應的header
FULL 記錄請求和響應的header、body和元數據

自定義配置 Feign 的日志級別

Java 代碼配置方式 UserCenterFeignConfiguration.java

import feign.Logger;
import org.springframework.context.annotation.Bean;

/**
* @Description 用戶中心 Feign 配置類
*/
public class UserCenterFeignConfiguration {

  @Bean
  public Logger.Level level() {
      return Logger.Level.FULL;
  }

}

UserCenterFeignClient.java

@FeignClient(name = "user-center", configuration = UserCenterFeignConfiguration.class)
public interface UserCenterFeignClient {
	...
}

application.yml

logging:
level:
  # feign 的日志級別是建立在接口日志級別基礎上的
  com.coisini.contentcenter.feignclient.UserCenterFeignClient: debug

訪問接口查看feign日志

SpringCloudAlibaba整合Feign實現遠程HTTP調用的簡單示例

yml 屬性配置方式

application.yml,實現效果同上

logging:
level:
  com.coisini.contentcenter.feignclient.UserCenterFeignClient: debug

# 自定義配置 feign 日志級別
feign:
client:
  config:
    # 調用的微服務名稱
    user-center:
      loggerLevel: full

全局配置 Feign 的日志級別

Java 代碼配置方式 GlobalFeignConfiguration.java

import feign.Logger;
import org.springframework.context.annotation.Bean;

/**
* @Description Feign 全局配置類
*/
public class GlobalFeignConfiguration {

  @Bean
  public Logger.Level level() {
      // feign 日志級別 FULL
      return Logger.Level.FULL;
  }

}

啟動類ContentCenterApplication.java

@EnableFeignClients(defaultConfiguration = GlobalFeignConfiguration.class)
@SpringBootApplication
public class ContentCenterApplication {
	...
}

application.yml

logging:
level:
  com.coisini.contentcenter.feignclient.UserCenterFeignClient: debug

接口日志打印

SpringCloudAlibaba整合Feign實現遠程HTTP調用的簡單示例

yml 屬性配置方式 application.yml

# 自定義配置 feign 日志級別
feign:
client:
  config:
    # 全局配置
    default:
      loggerLevel: full

實現效果同上

Feign 日志級別配置方式總結

  • 配置方式優先級:全局代碼配置 < 全局屬性配置 < 自定義代碼配置(細粒度) < 自定義屬性配置(細粒度)
  • 建議盡量使用屬性配置

 

項目源碼

GitHub: https://github.com/Maggieq8324/coisini-cloud-alibaba

Gitee: https://gitee.com/maggieq8324/coisini-cloud-alibaba

到此這篇關于SpringCloudAlibaba 整合 Feign 實現遠程 HTTP 調用的文章就介紹到這了,更多相關SpringCloudAlibaba遠程 HTTP 調用內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_41182727/article/details/120434890

延伸 · 閱讀

精彩推薦
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
主站蜘蛛池模板: 欧美日韩在线一区 | 免费的网址 | 亚洲精品丝袜在线一区波多野结衣 | 亚洲精品日韩专区在线观看 | 波多野给衣一区二区三区 | 2019国产精品 | 亚洲第一综合天堂另类专 | 黄色a| 操碰人人 | 99久久免费视频 | 九九九好热在线 | 久见久热 这里只有精品 | 国产精品1区2区 | lubuntu网页版在线 | 精品女同一区二区三区免费站 | 国产成人精品高清免费 | 美女脱了内裤让男生尿囗 | 日本视频在线观看 | 青青草原在线 | 午夜视频网站 | 日韩香蕉视频 | 邪恶肉肉全彩色无遮盖 | 亚洲国产在线视频精品 | 国产免费精彩视频 | 高h短篇辣肉各种姿势bl | 三叶草私人研究所 | 波多野结衣在线中文字幕 | 欧美视频黑鬼大战白妞 | 秋霞黄色 | 午夜久久久久久亚洲国产精品 | 色怡红院 | 成人私人影院在线版 | 男人免费视频 | 99久久无色码中文字幕 | 欧美亚洲影院 | 国产91 最新 在线 | 国产免费资源高清小视频在线观看 | 私人chinese beauty | 亚洲成a人片777777久久 | 欧美影院一区二区三区 | 啪啪艹|