最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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可以通過聲明接口自動(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)求添加通用邏輯

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

訪問接口查看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)文章

  • 解決RedisTemplate的key默認(rèn)序列化器的問題

    解決RedisTemplate的key默認(rèn)序列化器的問題

    這篇文章主要介紹了解決RedisTemplate的key默認(rèn)序列化器的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Java實(shí)現(xiàn)圖片拼接

    Java實(shí)現(xiàn)圖片拼接

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖片拼接的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 詳解Java Bellman-Ford算法原理及實(shí)現(xiàn)

    詳解Java Bellman-Ford算法原理及實(shí)現(xiàn)

    Bellman-Ford算法與Dijkstra算法類似,都是以松弛操作作為基礎(chǔ),Bellman-Ford算法是對(duì)所有邊都進(jìn)行松弛操作,本文將詳解Bellman-Ford算法原理及實(shí)現(xiàn),感興趣的可以了解一下
    2022-07-07
  • 詳解Java設(shè)計(jì)模式——迭代器模式

    詳解Java設(shè)計(jì)模式——迭代器模式

    這篇文章主要介紹了Java設(shè)計(jì)模式——迭代器模式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java之通過OutputStream寫入文件與文件復(fù)制問題

    Java之通過OutputStream寫入文件與文件復(fù)制問題

    這篇文章主要介紹了Java之通過OutputStream寫入文件與文件復(fù)制問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Idea如何導(dǎo)入一個(gè)SpringBoot項(xiàng)目的方法(圖文教程)

    Idea如何導(dǎo)入一個(gè)SpringBoot項(xiàng)目的方法(圖文教程)

    這篇文章主要介紹了Idea如何導(dǎo)入一個(gè)SpringBoot項(xiàng)目的方法(圖文教程),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java實(shí)現(xiàn)限定時(shí)間CountDownLatch并行場(chǎng)景

    Java實(shí)現(xiàn)限定時(shí)間CountDownLatch并行場(chǎng)景

    本文將結(jié)合實(shí)例代碼,介紹Java實(shí)現(xiàn)限定時(shí)間CountDownLatch并行場(chǎng)景,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Spring?RestTemplate遠(yuǎn)程調(diào)用過程

    Spring?RestTemplate遠(yuǎn)程調(diào)用過程

    這篇文章主要介紹了Spring?RestTemplate遠(yuǎn)程調(diào)用過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java詳解線上內(nèi)存暴漲問題定位和解決方案

    Java詳解線上內(nèi)存暴漲問題定位和解決方案

    本篇文章介紹了我在開發(fā)過程中遇到的線上內(nèi)存暴漲的問題,以及定位問題原因和解決該問題的過程及思路,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下
    2021-10-10
  • springmvc實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)信息為excle表格示例代碼

    springmvc實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)信息為excle表格示例代碼

    本篇文章主要介紹了springmvc實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)信息為excle表格,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧。
    2017-01-01

最新評(píng)論

石台县| 灵武市| 神木县| 汕尾市| 广宗县| 贞丰县| 彝良县| 合作市| 历史| 志丹县| 扎囊县| 曲松县| 信宜市| 景东| 定安县| 隆子县| 绍兴县| 巢湖市| 建湖县| 东港市| 瑞丽市| 方正县| 江山市| 恩平市| 烟台市| 信丰县| 大足县| 庐江县| 惠来县| 城固县| 盘锦市| 安福县| 浏阳市| 永济市| 资源县| 高陵县| 扎赉特旗| 全州县| 富宁县| 包头市| 新化县|