当前位置: 首页 > news >正文

Spring Cloud中实现Feign声明式服务调用客户端

可以通过OpenFeign从一个服务中调用另一个服务,我们一般采用的方式就是定义一个Feign接口并使用@FeignClient注解来进行标注,feign会默认为我们创建的接口生成一个代理对象。

当我们在代码中调用Feign接口的方法的时候,实际上就是在调用我们Feign生成的代理对象的方法,代理对象会根据接口定义的方法信息,将我们的请求转发到相应的代码提供者。

然后Feign会根据接口方法的注解信息,进行构建HTTP请求,并将相关请求发送给服务提供者,目前Feign支持多种HTTP请求,包括但不限于GET,POST等,并且支持请求参数,请求头等的配置。

服务提供者接收到请求后,根据请求路径和参数等信息,执行相应的业务逻辑,并将相关结果返回给Feign客户单,至此,Feign客户端接收到服务提供者的响应后,将响应结果返回给调用方。

启动服务之后,我们在Feign直接调用EurekaClientApplication中的接口,首先,我们就在启动类里边添加相关注解:

@SpringBootApplication

@EnableEurekaClient

@EnableFeignClients

public class FeignApplication

{

public static void main( String[] args )

{

SpringApplication.run(FeignApplication.class);

}

}

然后创建一个DcClient接口:

@FeignClient("eureka-client")

public interface DcClient {

@GetMapping("/dc")

String consumer();

}

那么我们应该在那里调用这个接口呢?

我们直接通过控制层进行调用:创建一个DcController控制类:

@RestController

public class DcController {

@Autowired

DcClient dcClient;

@GetMapping("/consumer")

public String dc() {

return dcClient.consumer();

}

}

然后重启FeignApplication。通过访问

localhost:2380/consumer

在Feign服务中调用到EurekaClient模块中的DcController,让我们看看EurekaClient模块中的DcController:

@RestController

public class DcController {

@Autowired

DiscoveryClient discoveryClient;

@GetMapping("/dc")

public String dc() {

String services = "Services: " + discoveryClient.getServices();

System.out.println(services);

return services;

}

}

http://www.lryc.cn/news/266092.html

相关文章:

  • 【网络编程】网络通信基础——简述TCP/IP协议
  • 观察者模式 Observer
  • Hadoop入门学习笔记——七、Hive语法
  • 采用SpringBoot框架+原生HTML、JS前后端分离模式开发和部署的电子病历编辑器源码(电子病历评级4级)
  • HTML表单
  • Http 请求体和响应体中重要的字段
  • 最新国内可用使用GPT4.0,GPT语音对话,Midjourney绘画,DALL-E3文生图
  • 【量化金融】证券投资学
  • 【Bash】重点总结
  • Git安装和使用教程,并以gitee为例实现远程连接远程仓库
  • Hadoop入门学习笔记——一、VMware准备Linux虚拟机
  • CSS3新增特性
  • Unity中Shader观察空间推导
  • 信息学奥赛一本通2034:【例5.1】反序输出
  • 使用教程之【SkyWant.[2304]】路由器操作系统,破解移动【Netkeeper】校园网【小白篇】
  • 模式识别与机器学习(十):梯度提升树
  • 《剑指offer》Java版--12.矩阵中的路径(DFS+剪枝)
  • AI智能体的介绍
  • Java设计模式-单例模式(Singleton)
  • 若依vue如何展示一个HTML页面(或者展示Markdown文档)
  • 优化for循环(js的问题)
  • 如何更好的去理解源码
  • c# opencv 获取多边形中心点
  • Redis数据一致解决方案
  • 安捷伦DSOX2024A示波器
  • Leetcode算法系列| 4. 寻找两个正序数组的中位数
  • Java整合APNS推送消息-IOS-APP(基于.p12推送证书)
  • C语言strcpy函数用法
  • 汽车服务品牌网站建设的作用是什么
  • 【iOS】UICollectionView