欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年09月27日 10:18:48   作者:Maggieq8324  
這篇文章主要介紹了SpringCloudAlibaba 整合 Feign 實現(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)用時,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é)果

在這里插入圖片描述


…至此,已完成Feign的整合

Feign 的組成和支持的配置項

 Feign 的組成

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

Feign 支持的配置項

配置項 作用
Logger.Level 指定日志級別
Retryer 指定重試策略
ErrorDecoder 指定錯誤解碼器
Request.Options 超時時間
Collection< RequestInterceptor> 攔截器
SetterFactory 用于設(shè)置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默認(rèn)不打印任何日志

級別 打印內(nèi)容
NONE(默認(rèn)值) 不記錄任何日志
BASIC 僅記錄請求方法、URL、響應(yīng)狀態(tài)代碼以及執(zhí)行時間
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日志

在這里插入圖片描述

yml 屬性配置方式

application.yml,實現(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

接口日志打印

在這里插入圖片描述

yml 屬性配置方式 application.yml

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

實現(xiàn)效果同上

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

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

項目源碼

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

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

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

相關(guān)文章

  • Java使用synchronized修飾方法來同步線程的實例演示

    Java使用synchronized修飾方法來同步線程的實例演示

    synchronized下的方法控制多線程程序中的線程同步非常方便,這里就來看一下Java使用synchronized修飾方法來同步線程的實例演示,需要的朋友可以參考下
    2016-06-06
  • Java基于BIO實現(xiàn)文件上傳功能

    Java基于BIO實現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了Java基于BIO實現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Feign如何解決服務(wù)之間調(diào)用傳遞token

    Feign如何解決服務(wù)之間調(diào)用傳遞token

    這篇文章主要介紹了Feign如何解決服務(wù)之間調(diào)用傳遞token,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java設(shè)計模式之java命令模式詳解

    Java設(shè)計模式之java命令模式詳解

    這篇文章主要介紹了Java設(shè)計模式編程中命令模式的使用,在一些處理請求響應(yīng)的場合經(jīng)??梢杂玫矫钅J降木幊趟悸?需要的朋友可以參考下
    2021-09-09
  • java發(fā)送http請求時如何處理異步回調(diào)結(jié)果

    java發(fā)送http請求時如何處理異步回調(diào)結(jié)果

    這篇文章主要介紹了java發(fā)送http請求時如何處理異步回調(diào)結(jié)果問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Spring Cloud  Hystrix實現(xiàn)服務(wù)容錯的方法

    Spring Cloud  Hystrix實現(xiàn)服務(wù)容錯的方法

    Hystrix是SpringCloud中重要的熔斷保護組件,由Netflix開源,主要提供延遲和容錯管理,以保障分布式系統(tǒng)的高可用性和魯棒性,通過封裝依賴項實現(xiàn)服務(wù)間隔離,引入回退邏輯應(yīng)對依賴服務(wù)故障,有效防止系統(tǒng)崩潰和服務(wù)級聯(lián)故障
    2024-10-10
  • Spring搭配Ehcache實例解析

    Spring搭配Ehcache實例解析

    這篇文章主要為大家詳細(xì)介紹了Spring搭配Ehcache實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • JavaSE的類和對象你真的了解嗎

    JavaSE的類和對象你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了JavaSE的類和對象,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • java自定義jar包讓jmeter使用的方法

    java自定義jar包讓jmeter使用的方法

    在本篇文章里小編給大家整理了一篇關(guān)于java自定義jar包讓jmeter使用的方法以及實例代碼,需要的朋友們參考下。
    2019-10-10
  • 一文徹底搞懂Java和JDK的版本命名問題

    一文徹底搞懂Java和JDK的版本命名問題

    今天通過本文給大家分享我對Java的版本號以及JDK的命名的了解,通過實例圖文展示給大家介紹的非常詳細(xì),需要的朋友跟隨小編一起看看吧
    2021-06-06

最新評論