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

SpringCloud Feign配置應(yīng)用詳細(xì)介紹

 更新時(shí)間:2022年09月01日 10:30:28   作者:悠然予夏  
這篇文章主要介紹了SpringCloud Feign配置應(yīng)用,feign是netflix提供的服務(wù)間基于http的rpc調(diào)用框架,在spring cloud得到廣泛應(yīng)用

前言

服務(wù)消費(fèi)者調(diào)用服務(wù)提供者的時(shí)候使用RestTemplate技術(shù)

存在不便之處:

  • 拼接url
  • restTmplate.getForObJect

這兩處代碼都比較模板化,能不能不讓我我們來寫這種模板化的東西,另外來說,拼接url非常的low,拼接字符串,拼接參數(shù),很low還容易出錯(cuò)

1、Feign簡介

Feign是Netflix開發(fā)的一個(gè)輕量級RESTful的HTTP服務(wù)客戶端(用它來發(fā)起請求,遠(yuǎn)程調(diào)用的),是以Java接口注解的方式調(diào)用Http請求,而不用像Java中通過封裝HTTP請求報(bào)文的方式直接調(diào)用,F(xiàn)eign被?泛應(yīng)用在Spring Cloud 的解決方案中。

類似于Dubbo,服務(wù)消費(fèi)者拿到服務(wù)提供者的接口,然后像調(diào)用本地接口方法一樣去調(diào)用,實(shí)際發(fā)出的是遠(yuǎn)程的請求。

  • Feign可幫助我們更加便捷,優(yōu)雅的調(diào)用HTTP API:不需要我們?nèi)テ唇觰rl然后呢調(diào)用restTemplate的api,在SpringCloud中,使用Feign?常簡單,創(chuàng)建一個(gè)接口(在消費(fèi)者--服務(wù)調(diào)用方這一端),并在接口上添加一些注解,代碼就完成了
  • SpringCloud對Feign進(jìn)行了增強(qiáng),使Feign支持了SpringMVC注解(OpenFeign)

本質(zhì):封裝了Http調(diào)用流程,更符合面向接口化的編程習(xí)慣,類似于Dubbo的服務(wù)調(diào)用

2、Feign配置應(yīng)用

在服務(wù)調(diào)用者工程 (消費(fèi)) 創(chuàng)建接口(添加注解)(效果)Feign = RestTemplate+Ribbon+Hystrix

服務(wù)消費(fèi)者工程(自動(dòng)投遞微服務(wù))中引入Feign依賴(或者父類工程)

   <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>

服務(wù)消費(fèi)者工程(自動(dòng)投遞微服務(wù))啟動(dòng)類使用注解@EnableFeignClients添加Feign支持

package com.lagou.edu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients // 開啟Feign客戶端功能
public class AutoDeliverApplication8091 {
    public static void main(String[] args) {
        SpringApplication.run(AutoDeliverApplication8091.class, args);
    }
}

注意:此時(shí)去掉Hystrix熔斷的支持注解@EnableCircuitBreaker即可包括引入的依賴,因?yàn)镕eign會(huì)自動(dòng)引入。

配置文件

server:
  port: 8091
# 注冊到Eureka服務(wù)中心
eureka:
  client:
    service-url:
      # 注冊到集群,就把多個(gè)EurekaServer地址使用逗號連接起來即可;注冊到單實(shí)例(非集群模式),那就寫一個(gè)
      defaultZone: http://LagouCloudEurekaServerB:8762/eureka,http://LagouCloudEurekaServerA:8761/eureka
  instance:
    prefer-ip-address: true # 服務(wù)實(shí)例中顯示ip,而不是顯示主機(jī)名(兼容老的Eureka版本)
    # 自定義實(shí)例顯示格式,加上版本號,便于多版本管理,注意是ip-address,早期版本是ipAddress
    instance-id: ${spring.cloud.client.ipaddress}:${spring.application.name}:${server.port}:@project.version@
spring:
  application:
    name: lagou-service-autodeliver
#針對的被調(diào)用方微服務(wù)名稱,不加就是全局生效
lagou-service-resume:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #負(fù)載策略調(diào)整
# springboot中暴露健康檢查等斷點(diǎn)接?
management:
  endpoints:
    web:
      exposure:
        include: "*"
# 暴露健康接?的細(xì)節(jié)
  endpoint:
    health:
      show-details: always

創(chuàng)建Feign接口

package com.lagou.edu.controller.service;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
// @FeignClient標(biāo)明當(dāng)前類是一個(gè)Feign客戶端,value指定該客戶端要請求的服務(wù)器名稱(登記到注冊中心上服務(wù)提供者的服務(wù)名稱)
// name或value:調(diào)?的服務(wù)名稱,和服務(wù)提供者yml?件中spring.application.name保持?致
@FeignClient(value = "lagou-service-resume")
@RequestMapping("/resume")
public interface ResumeServiceFeignClient {
    // feign要做的事情,拼裝url發(fā)起請求
    // 我們調(diào)用該方法就是調(diào)用本地接口方法,那么實(shí)際上做的事遠(yuǎn)程請求
    @GetMapping("/openstate/{userId}")
    public Integer findDefaultResumeState(@PathVariable Long userId);
}

注意:

  • @FeignClient注解的name屬性用于指定要調(diào)用的服務(wù)提供者名稱,和服務(wù)提供者yml?件中spring.application.name保持一致
  • 接口中的接口方法,就好比是遠(yuǎn)程服務(wù)提供者Controller中的Hander方法(只不過如同本地調(diào)用了),那么在進(jìn)行參數(shù)綁定的時(shí),可以使用@PathVariable、@RequestParam、RequestHeader等,這也是OpenFeign對SpringMVC注解的支持,但是需要注意value必須設(shè)置,否則會(huì)拋出異常

使用接口中方法完成遠(yuǎn)程調(diào)用(注入接口即可,實(shí)際注入的是接口的實(shí)現(xiàn))

package com.lagou.edu.controller;
import com.lagou.edu.controller.service.ResumeServiceFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/autodeliver")
public class AutoDeliverController {
    @Autowired
    private ResumeServiceFeignClient resumeServiceFeignClient;
    @GetMapping("/checkState/{userId}")
    public Integer findResumeOpenState(@PathVariable Long userId) {
        Integer defaultResumeState = resumeServiceFeignClient.findDefaultResumeState(userId);
        return defaultResumeState;
    }
}

到此這篇關(guān)于SpringCloud Feign配置應(yīng)用詳細(xì)介紹的文章就介紹到這了,更多相關(guān)SpringCloud Feign內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?Boot實(shí)現(xiàn)多數(shù)據(jù)源連接和切換的解決方案

    Spring?Boot實(shí)現(xiàn)多數(shù)據(jù)源連接和切換的解決方案

    文章介紹了在SpringBoot中實(shí)現(xiàn)多數(shù)據(jù)源連接和切換的幾種方案,并詳細(xì)描述了一個(gè)使用AbstractRoutingDataSource的實(shí)現(xiàn)步驟,感興趣的朋友一起看看吧
    2025-01-01
  • Mybatis和其他主流框架的整合使用過程詳解

    Mybatis和其他主流框架的整合使用過程詳解

    MyBatis最初是Apache的一個(gè)開源項(xiàng)目iBatis,?2010年6月這個(gè)項(xiàng)目由Apache?Software?Foundation遷移到了Google?Code,這篇文章主要介紹了Mybatis和其他主流框架的整合使用,需要的朋友可以參考下
    2023-11-11
  • 深度理解Java中volatile的內(nèi)存語義

    深度理解Java中volatile的內(nèi)存語義

    前面我們已經(jīng)講過了volatile的作用、底層實(shí)現(xiàn)與內(nèi)存屏障,下面就總結(jié)一下整個(gè)流程,文中有非常詳細(xì)的介紹及圖文示例,需要的朋友可以參考下
    2021-06-06
  • springsecurity第三方授權(quán)認(rèn)證的項(xiàng)目實(shí)踐

    springsecurity第三方授權(quán)認(rèn)證的項(xiàng)目實(shí)踐

    Spring security 是一個(gè)強(qiáng)大的和高度可定制的身份驗(yàn)證和訪問控制框架,本文主要介紹了springsecurity第三方授權(quán)認(rèn)證的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣可以了解一下
    2023-08-08
  • 基于idea把springboot項(xiàng)目部署到docker

    基于idea把springboot項(xiàng)目部署到docker

    這篇文章主要介紹了基于idea把springboot項(xiàng)目部署到docker,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • URL @PathVariable 變量的匹配原理分析

    URL @PathVariable 變量的匹配原理分析

    這篇文章主要介紹了URL @PathVariable 變量的匹配原理分析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java小程序計(jì)算圓周率代碼

    Java小程序計(jì)算圓周率代碼

    這篇文章主要介紹了Java小程序計(jì)算圓周率代碼,有兩種實(shí)現(xiàn)方法,喜歡的朋友可以參考下。
    2017-09-09
  • 6種Java創(chuàng)建對象的方式總結(jié)

    6種Java創(chuàng)建對象的方式總結(jié)

    在Java中,創(chuàng)建對象可以使用多種方式,本文將詳細(xì)介紹以下六種創(chuàng)建對象的方式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-04-04
  • java實(shí)現(xiàn)外賣訂餐系統(tǒng)

    java實(shí)現(xiàn)外賣訂餐系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)外賣訂餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • 淺析EasyExcel如何導(dǎo)出自動(dòng)回顯中文

    淺析EasyExcel如何導(dǎo)出自動(dòng)回顯中文

    這篇文章主要為大家詳細(xì)介紹了EasyExcel如何通過全局轉(zhuǎn)換器和自定義注解實(shí)現(xiàn)導(dǎo)出自動(dòng)回顯中文,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04

最新評論

唐河县| 田东县| 永善县| 综艺| 宣武区| 毕节市| 资中县| 和政县| 尼木县| 濉溪县| 黄冈市| 海原县| 鞍山市| 大兴区| 明星| 突泉县| 来凤县| 玛曲县| 贞丰县| 蒲城县| 旌德县| 松阳县| 观塘区| 抚宁县| 东莞市| 宜州市| 浙江省| 银川市| 敦煌市| 漳平市| 闽侯县| 九寨沟县| 清原| 象山县| 仪陇县| 灵丘县| 波密县| 正镶白旗| 民勤县| 雷州市| 南雄市|