Feign接口方式实现

2023-10-19 07:50
文章标签 实现 feign 接口方式

本文主要是介绍Feign接口方式实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Feign

Feign接口方式并没有成功,尝试了并没有成功

2020年10月16日再次尝试,成功,Success!

Feign的声明式的web service客户端,它让微服务之间调用更加简单,类似controller调用service,SpringCloud集成了Ribbon和Eureka,可在使用feign时提供负载均衡的http客户端

只要创建一个借口添加注解

Ribbon通过微服务名字访问

feign通过接口访问

版本问题

原因

版本问题,不同的版本导致使用的代码可能不同

重新选择springboot和springcloud的版本

image-20201017095439163

这个版本中文网有翻译好的文档,到时找问题也方便

image-20201014230828982

对应的是2.1.x的版本

image-20201017095915219

所以最后选择2.1.17.release GA SpringBoot 和 Greenwich S6 版本的springcloud

创建项目时检查一下

<artifactId>spring-boot-starter-parent</artifactId><version>2.1.17.RELEASE</version><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR6</spring-cloud.version>
</properties>

实现

角色和环境

  • image-20201017101208473

  • provider服务端口、eureka 注册中心、consumer消费者

  • dashboard后续可以进行监控

  • provider和consumer都需要连接eureka

    • <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
      </dependency>
      
  • consumer要通过feign的方式连接到provider需要openfeign

    • <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
      </dependency>
      
  • web是必须的

  • eureka作为注册中心

  • dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    

主要流程:

provider
  • 创建接口

    • image-20201017102836510

    • public interface ProviderTest {String test();
      }
      
  • 实现业务

    • 创建一个接口并实现业务

    • @RestController
      public class ProviderController {@AutowiredProviderTestImpl providerTest;@RequestMapping("/test")public String testMethod(){return providerTest.test();}@RequestMapping("/hystrix/{id}")
      //    @HystrixCommand(fallbackMethod = "hystrixGet")public String hystrixTest(@PathVariable (value = "id") int id){if (id==0){throw new RuntimeException("hystrix test============");}return "hystrix++++++++++++++++++++"+id;}public String hystrixGet(@PathVariable("id") int id){return "hystrixGet====================="+id;}}
      
  • 下面两段是实现hystrix用的暂时不写

  • 启动类支持Eureka

    • @EnableEurekaClient
      
    • server.port=8001spring.application.name=provider-8001
      #能直接代替applicationNameeureka.client.service-url.defaultZone:http://localhost:7001/eureka/eureka.instance.instance-id=8001
      
Eureka
  • 设置端口,开启支持

  • @EnableEurekaServer
    
  • server.port=7001
    
consumer
  • 需要一个一摸一样的接口,可以不一样,但是功能要一样,这个接口加上Fegin支持,并且添加上请求注解,需要与provider的请求一样,然后是provider在Eureka中的applicaitonName

  • @Component
    @FeignClient(value = "PROVIDER-8001")
    public interface FeignService {@RequestMapping("/test")String test();
    }
    
  • 使用Component交给spring托管,只要通过这个接口注入访问的就能通过Eureka访问到provider

  • 编写consumer的请求

  • @RestController
    public class ConsumerController {@AutowiredFeignService feignService;@RequestMapping("/consumer/test")public String consumerTest(){return feignService.test();}}
    
  • 启动类

  • @EnableEurekaClient
    @EnableFeignClients
    
  • 设置端口连接Eureka

  • server.port=8080eureka.client.service-url.defaultZone:http://localhost:7001/eureka/spring.application.name=consumer-8080eureka.instance.instance-id=8080
    
测试
  • image-20201017160328213

  • provide和consumer都就位

  • image-20201017161223668

  • image-20201017161259717

这篇关于Feign接口方式实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/238399

相关文章

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件