我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringCloud如何使用Feign实现动态路由操作

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringCloud如何使用Feign实现动态路由操作

这篇文章主要介绍“SpringCloud如何使用Feign实现动态路由操作”,在日常操作中,相信很多人在SpringCloud如何使用Feign实现动态路由操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringCloud如何使用Feign实现动态路由操作”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    一、理解及原理

    1.1理解

    Feign
    基于接口 + 注解的方式,一个http请求调用的轻量级框架

    Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。

    Feign是一种声明式、模板化的HTTP客户端(仅在Application Client中使用)。声明式调用是指,就像调用本地方法一样调用远程方法,无需感知操作远程http请求

    SpringCloud如何使用Feign实现动态路由操作

    1.2原理

    SpringCloud如何使用Feign实现动态路由操作

    二、Feign搭建实现步骤

    • 创建Springboot基础项目

    • 在注册中心(Eureka)配置的基础上,进行配置Feign

    三、配置文件(pom.xml)

    基础配置:

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

    整体:

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId><version>RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.30</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope></dependency><!-- Swagger --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.4.0</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.4.0</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>1.8.7</version></dependency><!--添加lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>RELEASE</version><scope>compile</scope></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>20.0</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>19.0</version><scope>compile</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--pagehelper分页--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.11</version></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.11</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.6</version></dependency><!--验证码https://blog.csdn.net/qq_41853447/article/details/105893567--><dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</artifactId><version>1.6.2</version></dependency><!--security权限管理--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies>

    三、程序代码

    在启动类上加上@EnableFeignClients,开启Feign的应用

    @EnableEurekaServer@EnableSwagger2@SpringBootApplication@EnableFeignClients(basePackages = "com.personal.pserver")public class PserverApplication {public static void main(String[] args) {SpringApplication.run(PserverApplication.class, args);System.out.println("========================person-server已启动========================");}}

    启动类添加完成之后,在指定需要访问的service注册使用,

    见其他博主讲解:

    在通过Feign来实现远程服务调用时,需要提供一个本地接口来继承服务标准工程提供的服务接口。这个本地接口不需要给予任何实现,在底层Spring容器会为这个接口提供一个基于JDK实现的代理对象,这个代理对象由Feign技术提供具体的HandlerInterceptor逻辑,实现远程的调用。实现过程类似通过代码调用LoadBalancerClient实现的Rest远程访问。
      而本地接口继承服务标准接口后,需要提供注解@FeignClient,注解的属性name代表当前接口要调用的远程服务的应用命名。

    SpringCloud如何使用Feign实现动态路由操作

    @RestController@Api(tags = "平台基本信息管理")@RequestMapping("/v1/pserver/platform/manager")public class PlatformController {@Autowiredprivate PPlatformService platformService;@ApiOperation(value = "获取平台基本信息", notes = "获取平台基本信息", httpMethod = "GET")@RequestMapping(value = "/findPlatformInfo",method = RequestMethod.GET)public PPlatform findPlatformInfo(@RequestParam("platformId") String platformId) {PPlatform pPlatform = platformService.findOnePlatformById(platformId);return pPlatform;}}
    @FeignClient(name="p-platform-service")public interface PPlatformService {@RequestMapping(value="/findPlatformInfo",method = RequestMethod.GET)PPlatform findOnePlatformById(@RequestParam(value="platformId") String platformId);}

    四、结果演示

    SpringCloud如何使用Feign实现动态路由操作

    SpringCloud如何使用Feign实现动态路由操作

    到此,关于“SpringCloud如何使用Feign实现动态路由操作”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    SpringCloud如何使用Feign实现动态路由操作

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    SpringCloud如何使用Feign实现动态路由操作

    这篇文章主要介绍“SpringCloud如何使用Feign实现动态路由操作”,在日常操作中,相信很多人在SpringCloud如何使用Feign实现动态路由操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”S
    2023-06-30

    如何使用Quagga实现Linux动态路由

    这篇文章给大家分享的是有关如何使用Quagga实现Linux动态路由的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。OSPF 的意思是最短路径优先Open Shortest Path First。OSPF 是一个
    2023-06-16

    Vue router动态路由如何实现

    本文小编为大家详细介绍“Vue router动态路由如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue router动态路由如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实现思路思路其实很简单
    2023-07-05

    Vue如何实现动态路由导航

    这篇文章主要介绍“Vue如何实现动态路由导航”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue如何实现动态路由导航”文章能帮助大家解决问题。1、导航守卫“导航” 表示路由正在发生改变正如其名,vu
    2023-07-05

    VUE路由动态加载如何实现

    这篇文章主要讲解了“VUE路由动态加载如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VUE路由动态加载如何实现”吧!首先新建vue工程,一般我们不会特殊处理路由,但当项目页面越来越多
    2023-07-04

    如何在Go语言中实现路由的动态路由匹配

    Go语言是一门快速、高效、安全、并发的编程语言,被越来越多的开发者广泛应用于Web开发中。在Web应用程序中,路由是非常重要的一环,它的作用是将请求分发到不同的处理器函数中。在此基础上,动态路由匹配更是一种灵活、高效的路由实现方式。本文将介
    如何在Go语言中实现路由的动态路由匹配
    2023-12-17

    Nacos+Spring Cloud Gateway动态路由如何配置实现

    小编给大家分享一下Nacos+Spring Cloud Gateway动态路由如何配置实现,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言  Nacos最近项目一直在使用,其简单灵活,支持更细粒度的命令空间,分组等为麻烦
    2023-06-20

    PHP中使用路由匹配器实现路由规则的动态配置和扩展

    在Web应用程序中,路由规则是非常重要的一部分。它决定了如何根据用户的请求将其映射到相应的处理程序或控制器。传统的做法是在应用程序的代码中硬编码路由规则,这样会导致代码难以维护和扩展。为了解决这个问题,可以使用路由匹配器来实现路由规则的动态
    2023-10-21

    如何使用nodejs实现路由功能

    这篇文章将为大家详细讲解有关如何使用nodejs实现路由功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。结构  项目结构如下  代码如下功能【router.js】// 加载所需模块var http =
    2023-06-14

    如何使用Go语言实现路由的静态文件服务

    如何使用Go语言实现路由的静态文件服务概述:在Web开发中,静态文件服务是非常常见且重要的功能。它通常用于提供网站的静态资源,例如HTML、CSS、JavaScript、图像等。本文将介绍如何使用Go语言实现一个简单的路由的静态文件服务,并
    如何使用Go语言实现路由的静态文件服务
    2023-12-17

    vue如何使用router-link实现路由跳转

    这篇文章主要介绍vue如何使用router-link实现路由跳转,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!router-link 【实现跳转最简单的方法】
    2023-06-18

    如何使用.NET6实现动态API

    本篇文章为大家展示了如何使用.NET6实现动态API,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ApiLite是基于.NET6直接将Service层生成动态api路由,可以不用添加Controll
    2023-06-22

    使用路由器功能实现主机跨网访问的操作方法

      路由器是互联网络中必不可少的网络设备之一,路由器是一种连接多个网络或网段的网络设备,它能将不同网络或网段之间的数据信息进行"翻译",以使它们能够相互"读"懂对方的数据,从而构成一个更大的网络,使整个网络互通数据,提高数据传输效率。在这里,小编为大家分享的教程是:使用路由器功能实现主机跨网访问的操作方法。  我们应该
    使用路由器功能实现主机跨网访问的操作方法
    2024-04-18

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录