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

【微服务】http客户端Feign

一、Fegin替代RestTemplate

RestTemplate:代码可读性差,编程体验不统一,参数复杂URL难以维护。
Feign:是一个声明式的http客户端,官方地址: https://github.com/OpenFeign/feign,其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。
使用Feign步骤如下:
1、引入依赖

        <!--Feign的客户端依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2、在orderservice启动类添加注解开启Feign的功能
在这里插入图片描述

3、编写Feign客户端

package cn.itcast.order.clients;

import cn.itcast.order.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient("userservice") //发送http请求时需要知道服务名称,在此指定
public interface UserClient {
    @GetMapping("/user/{id}")
    User findById(@PathVariable("id") Long id);
}

修改orderService:

package cn.itcast.order.service;

import cn.itcast.order.clients.UserClient;
import cn.itcast.order.mapper.OrderMapper;
import cn.itcast.order.pojo.Order;
import cn.itcast.order.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

@Service
public class OrderService {

    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private UserClient userClient;

    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;
    }
/*    @Autowired
    private RestTemplate restTemplate;

    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        //2、利用RestTemplate发送http请求,查询用户
        //2.1 url路径
        String url = "http://userservice/user/" + order.getUserId();
        //2.2 发起http请求,实现远程调用(原本返回的是json,告诉它我们要User对象类型)
        User user = restTemplate.getForObject(url, User.class);
        //3 封装user到order
        order.setUser(user);
        // 4.返回
        return order;
    }*/
}

二、自定义配置

在这里插入图片描述
在这里插入图片描述
全局生效:
在这里插入图片描述

在这里插入图片描述

三、Feign性能优化—连接池配置

Fegin添加HttpClient依赖

        <!--引入HttpClient依赖-->
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>
feign:
  httpclient:
    enabled: true # 支持HttpClient的开关
    max-connections: 200 #最大连接数
    max-connections-per-route: 50 #单个路径的最大连接数

http://www.kler.cn/a/415429.html

相关文章:

  • SpringBoot 架构助力夕阳红公寓管理系统可持续发展战略
  • 路由策略与路由控制实验
  • HarmonyOS Next 模拟器安装与探索
  • Fantasy业务代码执行之Run方法分析
  • 超详细ensp配置VRRP和MSTP协议
  • Android导出Excel
  • Redis中的分布式锁(步步为营)
  • MySQL单行函数
  • uniapp在App端引用echarts组件,解决无法渲染formatter问题
  • 阿里滑块v2,1.1.11新版,后面考虑上AI轨迹
  • 速发论文 | 基于 2D-SWinTransformer+1D-CNN-SENet并行故障诊断模型
  • 【C++】泛型算法(五):泛型算法结构与特定容器算法
  • RuoYi排序
  • 数学建模选MATLAB还是Python?
  • webpack5减少构建文件体积(五)
  • CSS新特性(11)
  • ⭐ Unity 资源管理解决方案:Addressable_ Demo演示
  • 从ChatGPT到代理AI:安全领域的新变革
  • Vue CLI 提供了哪些功能
  • 【Ubuntu】安装 Anaconda
  • 注册表修改键盘位置
  • 专业130+总分400+西南交通大学824信号与系统考研经验西南交大电子信息与通信工程,真题,大纲,参考书。
  • 小程序 - 个人简历
  • 添加字符(暴力模拟)
  • Opencv+ROS自编相机驱动
  • VUE前端实现天爱滑块验证码--详细教程