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

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

 更新時(shí)間:2021年09月27日 10:18:48   作者:Maggieq8324  
這篇文章主要介紹了SpringCloudAlibaba 整合 Feign 實(shí)現(xiàn)遠(yuǎn)程 HTTP 調(diào)用,文章中使用的是OpenFeign,是Spring社區(qū)開發(fā)的組件,需要的朋友可以參考下

前言

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

環(huán)境

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

簡(jiǎn)單示例

content-center pom.xml

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

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

    /**
     * test接口被調(diào)用時(shí),feign會(huì)構(gòu)造出 url
     * http://user-center/test/{name} 完成請(qǐng)求
     * @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("請(qǐng)求...");
        return "hello " + name;
    }

}

示例測(cè)試結(jié)果

在這里插入圖片描述


…至此,已完成Feign的整合

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

 Feign 的組成

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

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

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

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

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

Feign 的日志

 Feign 的日志級(jí)別

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

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

自定義配置 Feign 的日志級(jí)別

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

訪問(wèn)接口查看feign日志

在這里插入圖片描述

yml 屬性配置方式

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

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

# 自定義配置 feign 日志級(jí)別
feign:
  client:
    config:
      # 調(diào)用的微服務(wù)名稱
      user-center:
        loggerLevel: full

全局配置 Feign 的日志級(jí)別

Java 代碼配置方式 GlobalFeignConfiguration.java

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

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

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

}

啟動(dòng)類ContentCenterApplication.java

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

application.yml

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

接口日志打印

在這里插入圖片描述

yml 屬性配置方式 application.yml

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

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

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

  • 配置方式優(yōu)先級(jí):全局代碼配置 < 全局屬性配置 < 自定義代碼配置(細(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java使用synchronized修飾方法來(lái)同步線程的實(shí)例演示

    Java使用synchronized修飾方法來(lái)同步線程的實(shí)例演示

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

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

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

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

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

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

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

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

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

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

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

    Spring搭配Ehcache實(shí)例解析

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

    JavaSE的類和對(duì)象你真的了解嗎

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

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

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

    一文徹底搞懂Java和JDK的版本命名問(wèn)題

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

最新評(píng)論