激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - Java教程 - SpringCloudAlibaba整合Feign實(shí)現(xiàn)遠(yuǎn)程HTTP調(diào)用的簡單示例

SpringCloudAlibaba整合Feign實(shí)現(xiàn)遠(yuǎn)程HTTP調(diào)用的簡單示例

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

這篇文章主要介紹了SpringCloudAlibaba 整合 Feign 實(shí)現(xiàn)遠(yuǎn)程 HTTP 調(diào)用,文章中使用的是OpenFeign,是Spring社區(qū)開發(fā)的組件,需要的朋友可以參考下

前言

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

環(huán)境

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

 

簡單示例

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 要請求的微服務(wù)的名稱
*/
@FeignClient(name = "user-center")
public interface TestFeignClient{

  /**
   * test接口被調(diào)用時(shí),feign會構(gòu)造出 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;
  }

}

示例測試結(jié)果

SpringCloudAlibaba整合Feign實(shí)現(xiàn)遠(yuǎn)程HTTP調(diào)用的簡單示例


…至此,已完成Feign的整合

 

Feign 的組成和支持的配置項(xiàng)

Feign 的組成

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

Feign 支持的配置項(xiàng)

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

配置屬性支持的配置項(xiàng)

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

 

Feign 的日志

Feign 的日志級別

feign默認(rèn)不打印任何日志

級別 打印內(nèi)容
NONE(默認(rèn)值) 不記錄任何日志
BASIC 僅記錄請求方法、URL、響應(yīng)狀態(tài)代碼以及執(zhí)行時(shí)間
HEADERS BASIC級別的基礎(chǔ)上,記錄請求和響應(yīng)的header
FULL 記錄請求和響應(yīng)的header、body和元數(shù)據(jù)

自定義配置 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 的日志級別是建立在接口日志級別基礎(chǔ)上的
  com.coisini.contentcenter.feignclient.UserCenterFeignClient: debug

訪問接口查看feign日志

SpringCloudAlibaba整合Feign實(shí)現(xiàn)遠(yuǎn)程HTTP調(diào)用的簡單示例

yml 屬性配置方式

application.yml,實(shí)現(xiàn)效果同上

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

# 自定義配置 feign 日志級別
feign:
client:
  config:
    # 調(diào)用的微服務(wù)名稱
    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實(shí)現(xiàn)遠(yuǎn)程HTTP調(diào)用的簡單示例

yml 屬性配置方式 application.yml

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

實(shí)現(xiàn)效果同上

Feign 日志級別配置方式總結(jié)

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

 

項(xiàng)目源碼

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

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

到此這篇關(guān)于SpringCloudAlibaba 整合 Feign 實(shí)現(xiàn)遠(yuǎn)程 HTTP 調(diào)用的文章就介紹到這了,更多相關(guān)SpringCloudAlibaba遠(yuǎn)程 HTTP 調(diào)用內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

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

延伸 · 閱讀

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

    小米推送Java代碼

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

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

    Java使用SAX解析xml的示例

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

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

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

    阿杜7482021-02-04
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

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

    littleschemer13532021-05-16
  • Java教程Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

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

    spcoder14552021-10-18
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

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

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

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

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

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉(zhuǎn)換詳解

    xml與Java對象的轉(zhuǎn)換詳解

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

    Java教程網(wǎng)2942020-09-17
主站蜘蛛池模板: 日日狠狠久久偷偷四色综合免费 | 黄色网页在线观看 | 美女扒开腿让男生桶爽网站 | 国产精品久久久久影院老司 | 国产一级淫片a级aaa | 久久网一区二区 | 国产精品免费看 | 一夜新娘第三季免费观看 | 日日摸夜夜添夜夜添牛牛 | 欧美激情天堂 | 国产一级毛片国产 | 日韩一级网站 | 精品影视一区二区 | 免费观看国产精品视频 | jizzjizz中国少妇中文 | 欧美日韩亚洲一区二区三区 | 一级@片| 中国妞xxxhd露脸偷拍视频 | 久草在线免费看 | 欧美成人精品h版在线观看 国产一级淫片在线观看 | 久久精品视频在线看99 | 久久久三区 | 免费毛片随便看 | 成人永久视频 | 色午夜日本 | 91精品一区二区综合在线 | 视频一区国产精品 | 主播粉嫩国产在线精品 | 久久99精品久久久久久秒播蜜臀 | 中文黄色一级片 | 一级小毛片 | 精品在线观看一区 | 欧美成人免费电影 | 久久精品成人免费国产片桃视频 | 国产18成人免费视频 | 在线高清中文字幕 | 精品在线一区二区三区 | 亚洲网站在线观看视频 | 天天草天天操 | 亚洲综合精品 | 久久嗨 |