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

微服務(wù)Springcloud之Feign的基本使用

 更新時間:2023年03月29日 16:52:39   作者:JAVA販賣機  
這篇文章主要介紹了微服務(wù)Springcloud之Feign的基本使用,Spring?Cloud集成Feign并對其進行了增強,使Feign支持了Spring?MVC注解,需要的朋友可以參考下

前言

        當(dāng)我們通過RestTemplate調(diào)用其它服務(wù)的API時,所需要的參數(shù)須在請求的URL中進行拼接,如果參數(shù)少的話或許我們還可以忍受,一旦有多個參數(shù)的話,這時拼接請求字符串就會效率低下。

一、Feign概述

        Feign是Spring Cloud提供的聲明式、模板化的HTTP客戶端, 它使得調(diào)用遠程服務(wù)就像調(diào)用本地服務(wù)一樣簡單,只需要創(chuàng)建一個接口并添加一個注解即可。

        Spring Cloud集成Feign并對其進行了增強,使Feign支持了Spring MVC注解;Feign默認(rèn)集成了Ribbon,所以Fegin默認(rèn)就實現(xiàn)了負(fù)載均衡的效果。

二、Feign入門

        注意:以下所有步驟實現(xiàn)的前提是需要在啟動類上加入注解 @EnableFeignClients 主要是為開啟feign接口掃描

1.創(chuàng)建服務(wù)提供者(provider)

導(dǎo)入依賴:

<!--Spring Cloud OpenFeign Starter -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

代碼如下(示例):

        在服務(wù)提供者中調(diào)用servic層獲取數(shù)據(jù)

//創(chuàng)建服務(wù)提供者
@RestController
@RequestMapping("/provider")
public class ProviderController {
	
	@Autowired
	private UserService userService;
 
	@RequestMapping("/getUserById/{id}")
	public User getUserById(@PathVariable Integer id){
		return userService.getUserById(id);
	}
}

2.創(chuàng)建feign接口    

代碼如下(示例):

        解釋都放在了代碼中,可以直接復(fù)制粘貼

/**
 * @FeignClient 一般采用服務(wù)名進行命名
 * name:指定FeignClient的名稱,如果項目使用了Ribbon,name屬性會作為微服務(wù)的名稱,用于服務(wù)發(fā)現(xiàn)
 * url: url一般用于調(diào)試,可以手動指定@FeignClient調(diào)用的地址
 *
 * @RequestMapping 主要用于feign框架拼接傳遞url,彌補了Ribbon的url需要手動拼接的缺陷
 * @PathVariable("id") 當(dāng)路徑為restful風(fēng)格時路徑傳參方式
 * @RequestParam("id") 當(dāng)路徑為?id=250 時傳參方式
 * @RequestBody User user 當(dāng)路徑為對象時采用的傳參方式,(集合、數(shù)組等都屬于對象)
 */
@FeignClient("feign-provider")
@RequestMapping("/provider")
public interface UserFeign {
 
    @RequestMapping("/getUserById/{id}")
    User getUserById(@PathVariable("id") Integer id);
 
    @RequestMapping("/deleteUserById")
    User deleteUserById(@RequestParam("id") Integer id);//?形式拼接參數(shù),?id=250
 
    @RequestMapping("/addUser")
    User addUser(@RequestBody User user);//pojo--->json
}

3、創(chuàng)建服務(wù)消費者(consumer)

//服務(wù)消費者
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
 
    @Autowired
    private UserFeign userFeign;
 
    @RequestMapping("/getUserById/{id}")
    public User getUserById(@PathVariable Integer id){
        return userFeign.getUserById(id);
    }
}

        application.yml文件

server:
  port: 80
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.209.129:8848
  application:
    name: feign-consumer

三、Feign 原理

1、將feign接口的代理類掃描到Spring容器中:
        @EnableFeignClients開啟feign注解掃描:FeignClientsRegistrar.registerFeignClients()掃描被 @FeignClient標(biāo)識的接口生成代理類,并把接口和代理類交給Spring的容器管理。
    2、為接口的方法創(chuàng)建RequestTemplate
        當(dāng)consumer調(diào)用feign代理類時,代理類會調(diào)用SynchronousMethodHandler.invoke()創(chuàng)建RequestTemplate(url,參數(shù))
    3、發(fā)出請求
        代理類會通過RequestTemplate創(chuàng)建Request,然后client(URLConnetct、HttpClient、OkHttp)使用Request發(fā)送請求

四、Feign優(yōu)化

1、開啟feign日志

feign日志級別

         在consumer的yml文件中加入以下代碼

 
feign:
  client:
    config:
      feign-provider: #此處寫的是服務(wù)名稱,針對我們feign微服務(wù)的配置,如果是default就是全局配置
        loggerLevel: full #配置Feign的日志級別,相當(dāng)于代碼配置方式中的Logger
 
#在application.yml中使用 logging.level.<Feign客戶端對應(yīng)的接口的全限定名> 的參數(shù)配置格式來開啟指定客戶端日志
logging:
  level:
    com.bjpowernode.feign: debug

隨后啟動測試:

        出現(xiàn)以下結(jié)果表示日志輸出成功 

2、feign超時問題

        首先、Feign的負(fù)載均衡底層用的就是Ribbon,所以這里的請求超時配置其實就是配置Ribbon,當(dāng)出現(xiàn)請求超時會出現(xiàn)以下報錯。

注意 :當(dāng)開啟日志配置之后,feign超時問題不會出現(xiàn)報錯情況。

        針對超時問題我們需要在之前的日志配置中加入以下內(nèi)容

ConnectTimeout: 5000 #請求連接的超時時間

ReadTimeout: 5000 #請求處理的超時時間

3、http連接池

(1)、連接池介紹

        首先,我們知道HTTP連接需要經(jīng)過三次握手,四次揮手的過程,這是很耗費性能的;所以HTTP連接池幫助我們節(jié)省了這一步。

        同時Feign的HTTP客戶端支持三種框架:

        HttpURLConnection、HttpClient、OkHttp;默認(rèn)是HttpURLConnection

(2)、連接池使用

         先引入依賴到公共接口工廠interfac,如果沒有做公共接口就放入consumer

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
</dependency>

講真的,其實這已經(jīng)完成了,但是,我們還是要知道一下它的原理,否則顯得太片面了

在配置文件中我們看到,連接池引入之后默認(rèn)是開啟的,所以我們就不用再寫了

4、gzip壓縮

壓縮能力

        當(dāng) Gzip 壓縮到一個純文本文件時,效果是非常明顯的,大約可以減少 70%以上的文件大小。·

這個開啟也是比較簡單,只需要在consumer中yml文件中寫入以下代碼即可

此時在瀏覽器中就可以看到我們提供的壓縮方式,和瀏覽器支持的壓縮方式 

 到此這篇關(guān)于微服務(wù)Springcloud之Feign的基本使用的文章就介紹到這了,更多相關(guān)微服務(wù)Feign的基本使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java如何讀取csv文件并將數(shù)據(jù)放入對象中

    Java如何讀取csv文件并將數(shù)據(jù)放入對象中

    這篇文章主要介紹了Java如何讀取csv文件并將數(shù)據(jù)放入對象中的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • SpringBoot前端傳遞數(shù)組后端接收兩種常用的方法

    SpringBoot前端傳遞數(shù)組后端接收兩種常用的方法

    這篇文章主要給大家介紹了關(guān)于SpringBoot前端傳遞數(shù)組后端接收兩種常用的方法,文中通過代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-04-04
  • Spring Boot高可用限流三種實現(xiàn)解決方案

    Spring Boot高可用限流三種實現(xiàn)解決方案

    限流是對某一時間窗口內(nèi)的請求數(shù)進行限制,保持系統(tǒng)的可用性和穩(wěn)定性,本文就介紹了Spring Boot高可用限流三種實現(xiàn)解決方案,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • 在CentOS系統(tǒng)上安裝Java的openjdk的方法

    在CentOS系統(tǒng)上安裝Java的openjdk的方法

    這篇文章主要介紹了在CentOS系統(tǒng)上安裝Java的openjdk的方法,同樣適用于Fedora等其他RedHat系的Linux系統(tǒng),需要的朋友可以參考下
    2015-06-06
  • 教你開發(fā)腳手架集成Spring?Boot?Actuator監(jiān)控的詳細(xì)過程

    教你開發(fā)腳手架集成Spring?Boot?Actuator監(jiān)控的詳細(xì)過程

    這篇文章主要介紹了開發(fā)腳手架集成Spring?Boot?Actuator監(jiān)控的詳細(xì)過程,集成包括引入依賴配置文件及訪問驗證的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • SpringCloud集成和使用OpenFeign的教程指南

    SpringCloud集成和使用OpenFeign的教程指南

    在微服務(wù)架構(gòu)中,服務(wù)間的通信是至關(guān)重要的,SpringCloud作為一個功能強大的微服務(wù)框架,為我們提供了多種服務(wù)間通信的方式,其中,OpenFeign是一個聲明式的Web服務(wù)客戶端,它使得編寫Web服務(wù)客戶端變得更加簡單,本文將詳細(xì)介紹如何在SpringCloud項目中集成和使用OpenFeign
    2024-10-10
  • java實現(xiàn)簡單的webservice方式

    java實現(xiàn)簡單的webservice方式

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)簡單的webservice方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 解析JavaSe的抽象類和接口

    解析JavaSe的抽象類和接口

    這篇文章主要為大家詳細(xì)介紹了JavaSe的抽象類和接口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • httpclient connect連接請求方法源碼解讀

    httpclient connect連接請求方法源碼解讀

    這篇文章主要為大家介紹了httpclient connect連接請求方法解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Java實現(xiàn)簡單計算器小程序

    Java實現(xiàn)簡單計算器小程序

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)簡單計算器小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評論

扎赉特旗| 芜湖县| 石台县| 江永县| 广汉市| 千阳县| 沾化县| 兖州市| 成都市| 鲜城| 佛坪县| 申扎县| 广西| 攀枝花市| 沙坪坝区| 五华县| 靖江市| 新密市| 合作市| 曲水县| 万载县| 土默特右旗| 新宾| 特克斯县| 唐河县| 巍山| 湖北省| 文水县| 五华县| 正蓝旗| 恩施市| 红桥区| 乳山市| 青海省| 繁昌县| 永善县| 阳谷县| 聂荣县| 屯门区| 清流县| 陆河县|