1.SpringCloud(一)SpringCloud简介2.SpringCloud(二)服务间调用和案例3.SpringCloud(三)Eureka 注册中心4.SpringCloud(四)Ribbon负载均衡5.SpringCloud(五)Nacos注册中心(上)6.SpringCloud(六)Nacos注册中心(下)7.SpringCloud 微服务简介8.SpringCloud(六)Nacos注册中心(下)
9.SpringCloud(七)Feign声明式远程调用
10.SpringCloud(八)Feign自定义配置11.SpringCloud(九)Feign实战应用和性能优化12.SpringCloud(十)统一网关Gateway13.SpringCloud(十一)路由过滤器和路由断言工厂14.SpringCloud(十二)全局过滤器和跨域 利用RestTemplate发起远程调用的代码,存在下面的问题:代码可读性差,编程体验不统一。参数复杂URL难以维护。
Feign是一个声明式的http客户端,官方地址:https://spring.io/projects/spring-cloud-openfeign 。其作用是帮助我们优雅的实现http请求的发送。
一、使用Feign实现服务远程调用
Feign 使用步骤:
步骤一、引入依赖:
我们在order-service服务的pom文件中引入feign的依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
步骤二、 添加注解:
在order-service的启动类添加注解开启Feign的功能:
@EnableFeignClients public class OrderApplication { public static void main(String[] args) { SpringApplication.run(OrderApplication.class, args); } }
步骤三、 编写Feign的客户端
在order-service中新建一个接口,
这个客户端主要是基于SpringMVC的注解来声明远程调用的信息,比如:
- 服务名称:userservice
- 请求方式:GET
- 请求路径:/user/{id}
- 请求参数:Long id
- 返回值类型:User
这样,Feign就可以帮助我们发送http请求,无需自己使用RestTemplate来发送了。
代码如下:
@FeignClient("userservice") public interface UserClient { @GetMapping("/user/{id}") User findById(@PathVariable("id") Long id); }
步骤四、 测试
修改order-service中的OrderService类中的queryOrderById方法,使用Feign客户端代替RestTemplate:
public Order queryOrderById(Long orderId) { // 1.查询订单 Order order = orderMapper.findById(orderId); // 2.用Feign远程调用 User user = userClient.findById(order.getUserId()); // 3.封装user到Order order.setUser(user); // 4.返回 return order; }
测试访问成功,代码看起来优雅多了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)