最新国产好看的视频,伊人天堂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ū)開(kāi)發(fā)的組件,需要的朋友可以參考下

前言

FeignNetflix開(kāi)源的聲明式HTTP客戶(hù)端,致力于讓編寫(xiě)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ū)開(kāi)發(fā)的組件

簡(jiǎn)單示例

content-center pom.xml

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

啟動(dòng)類(lèi)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ù)的名稱(chēng)
 */
@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 用戶(hù)中心 Feign 配置類(lèi)
 */
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ù)名稱(chēng)
      user-center:
        loggerLevel: full

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

Java 代碼配置方式 GlobalFeignConfiguration.java

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

/**
 * @Description Feign 全局配置類(lèi)
 */
public class GlobalFeignConfiguration {

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

}

啟動(dòng)類(lèi)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)序列化器的問(wèn)題

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

    這篇文章主要介紹了解決RedisTemplate的key默認(rèn)序列化器的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    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算法類(lèi)似,都是以松弛操作作為基礎(chǔ),Bellman-Ford算法是對(duì)所有邊都進(jìn)行松弛操作,本文將詳解Bellman-Ford算法原理及實(shí)現(xiàn),感興趣的可以了解一下
    2022-07-07
  • 詳解Java設(shè)計(jì)模式——迭代器模式

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

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

    Java之通過(guò)OutputStream寫(xiě)入文件與文件復(fù)制問(wèn)題

    這篇文章主要介紹了Java之通過(guò)OutputStream寫(xiě)入文件與文件復(fù)制問(wèn)題,具有很好的參考價(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)目的方法(圖文教程),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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)景,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Spring?RestTemplate遠(yuǎn)程調(diào)用過(guò)程

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

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

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

    本篇文章介紹了我在開(kāi)發(fā)過(guò)程中遇到的線上內(nèi)存暴漲的問(wèn)題,以及定位問(wèn)題原因和解決該問(wèn)題的過(guò)程及思路,通讀本篇對(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表格,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。
    2017-01-01

最新評(píng)論

江北区| 阳新县| 牡丹江市| 蓝山县| 达拉特旗| 峡江县| 简阳市| 荣昌县| 呼和浩特市| 武隆县| 祁阳县| 家居| 体育| 台南市| 武川县| 麻栗坡县| 彭阳县| 临泽县| 红原县| 休宁县| 广安市| 嘉禾县| 淮南市| 浪卡子县| 宜兰县| 新蔡县| 正镶白旗| 都兰县| 登封市| 横山县| 百色市| 赤城县| 饶平县| 青田县| 合阳县| 肥西县| 清镇市| 成安县| 建瓯市| 陕西省| 车致|