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

SpringCloud Feign配置應用詳細介紹

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

前言

服務消費者調(diào)用服務提供者的時候使用RestTemplate技術

存在不便之處:

  • 拼接url
  • restTmplate.getForObJect

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

1、Feign簡介

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

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

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

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

2、Feign配置應用

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

服務消費者工程(自動投遞微服務)中引入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>

服務消費者工程(自動投遞微服務)啟動類使用注解@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);
    }
}

注意:此時去掉Hystrix熔斷的支持注解@EnableCircuitBreaker即可包括引入的依賴,因為Feign會自動引入。

配置文件

server:
  port: 8091
# 注冊到Eureka服務中心
eureka:
  client:
    service-url:
      # 注冊到集群,就把多個EurekaServer地址使用逗號連接起來即可;注冊到單實例(非集群模式),那就寫一個
      defaultZone: http://LagouCloudEurekaServerB:8762/eureka,http://LagouCloudEurekaServerA:8761/eureka
  instance:
    prefer-ip-address: true # 服務實例中顯示ip,而不是顯示主機名(兼容老的Eureka版本)
    # 自定義實例顯示格式,加上版本號,便于多版本管理,注意是ip-address,早期版本是ipAddress
    instance-id: ${spring.cloud.client.ipaddress}:${spring.application.name}:${server.port}:@project.version@
spring:
  application:
    name: lagou-service-autodeliver
#針對的被調(diào)用方微服務名稱,不加就是全局生效
lagou-service-resume:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #負載策略調(diào)整
# springboot中暴露健康檢查等斷點接?
management:
  endpoints:
    web:
      exposure:
        include: "*"
# 暴露健康接?的細節(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標明當前類是一個Feign客戶端,value指定該客戶端要請求的服務器名稱(登記到注冊中心上服務提供者的服務名稱)
// name或value:調(diào)?的服務名稱,和服務提供者yml?件中spring.application.name保持?致
@FeignClient(value = "lagou-service-resume")
@RequestMapping("/resume")
public interface ResumeServiceFeignClient {
    // feign要做的事情,拼裝url發(fā)起請求
    // 我們調(diào)用該方法就是調(diào)用本地接口方法,那么實際上做的事遠程請求
    @GetMapping("/openstate/{userId}")
    public Integer findDefaultResumeState(@PathVariable Long userId);
}

注意:

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

使用接口中方法完成遠程調(diào)用(注入接口即可,實際注入的是接口的實現(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;
    }
}

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

相關文章

  • SpringBoot數(shù)據(jù)校驗功能的實現(xiàn)

    SpringBoot數(shù)據(jù)校驗功能的實現(xiàn)

    這篇文章主要介紹了SpringBoot數(shù)據(jù)校驗功能的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Spring主配置文件(applicationContext.xml) 導入約束詳解

    Spring主配置文件(applicationContext.xml) 導入約束詳解

    在本篇文章里我們給各位整理的是關于Spring主配置文件(applicationContext.xml) 導入約束的相關知識點內(nèi)容,需要參考下。
    2019-08-08
  • java實現(xiàn)隨機輸出300題四則運算

    java實現(xiàn)隨機輸出300題四則運算

    本文主要介紹了java實現(xiàn)隨機輸出300題四則運算實例,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • Java規(guī)則引擎Easy Rules的使用介紹

    Java規(guī)則引擎Easy Rules的使用介紹

    這篇文章主要介紹了Java規(guī)則引擎Easy Rules的使用介紹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Spring?Gateway基礎教程

    Spring?Gateway基礎教程

    本文主要總結(jié)Spring?Gateway的基礎用法,內(nèi)容包括網(wǎng)關、Spring?Gateway工作流程、Spring?Cloud?Gateway搭建、路由配置方式、負載均衡實現(xiàn)、斷言工廠這幾個部分,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • 使用Java編寫串口程序的流程步驟

    使用Java編寫串口程序的流程步驟

    本文將介紹如何使用Java編寫串口程序,包括串口的基本概念、Java串口通信API的使用、串口程序的開發(fā)流程以及一些常見問題的解決方法等,希望通過本文的介紹,讀者能夠?qū)κ褂肑ava編寫串口程序有一個基本的了解,并能夠?qū)嵺`和應用于實際項目中
    2023-11-11
  • Java中equals()方法實例詳解

    Java中equals()方法實例詳解

    equals方法是java.lang.Object類的方法,下面這篇文章主要給大家介紹了關于Java中equals()方法的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • SpringBoot源碼剖析之屬性文件加載原理

    SpringBoot源碼剖析之屬性文件加載原理

    這篇文章主要給大家介紹了關于SpringBoot源碼剖析之屬性文件加載原理的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-02-02
  • 關于Java鎖性能提高(鎖升級)機制的總結(jié)

    關于Java鎖性能提高(鎖升級)機制的總結(jié)

    這篇文章主要介紹了關于Java鎖性能提高(鎖升級)機制的總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 詳解Java中native關鍵字

    詳解Java中native關鍵字

    這篇文章主要為大家詳細介紹了Java中native關鍵字,什么是Native Method
    2016-02-02

最新評論