• 山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十四)- 微服务(4)


    目录

    8. http客户端Feign

    8.1 feign远程调用

    8.2 feign自定义配置

    8.3 feign性能优化

    8.4 feign最佳实践


    8. http客户端Feign

    8.1 feign远程调用

    RestTemplate存在的问题 :

    1. 代码可读性差

    2. 参数复杂URL难以维护

    Feign是声明式的http客户端

    使用步骤 :

    1. 引入依赖

      
              
              
                  org.springframework.cloud
                  spring-cloud-starter-openfeign
              
    1. 开启自动装配 在启动类上添加注解

      
      @EnableFeignClients
    1. 创建接口声明

      
      @FeignClient("userservice")
      public interface UserClient {
          
          @GetMapping("/user/{id}")
          User findById(@PathVariable Long id);
      }
    1. order- controller中替换原来发请求的代码

      
         @Autowired
         private OrderMapper orderMapper;
      ​
          // 注入feign接口
          @Autowired
          private UserClient userClient;
      ​
          @GetMapping("{orderId}")
          public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
              Order order = orderMapper.findById(orderId);
              User user = userClient.findById(order.getUserId());
              order.setUser(user);
              return order;
          }

    8.2 feign自定义配置

    修改日志级别 :

    1. 配置文件方式 :

    全局生效 :

      
      feign:
        client:
          config:
            default:     #  default就是全局配置    如果写服务名称就是针对某个微服务的配置
              loggerLevel: FULL  # 日志级别

    只针对某个微服务生效

      
      feign:
        client:
          config:
            userservice:     # 只对userservice生效
              loggerLevel: FULL  # 日志级别

    1. 代码配置

    8.3 feign性能优化

    主要包括 :

    1. 使用连接池代替默认的URLCollection

    2. 日志级别,最好用basic或none

    连接池配置 ;

    引入依赖 :

      
              
              
                  io.github.openfeign
                  feign-httpclient
              

    配置连接池 :

      
      feign:
        client:
          config:
            default:     #  default就是全局配置    如果写服务名称就是针对某个微服务的配置
              loggerLevel: BASIC  # 日志级别
        httpclient:
          enable: true           #  支持HTTPClient的开关
          max-connection: 200       #   最大连接数
          max-connections-per-route: 50     #  单个路径的最大连接数

    8.4 feign最佳实践

    方式一 :

    方式二 :

    方式二的实现 :

    1. 新建feign-api模块 引入feign的stater的依赖

    2. 把order-service的 UserClient User实体类 FeignConfiguration配置类

    3. 复制到feign-api模块中

    4. 在order-service中引入feign-api模块的依赖

    5. 测试

  • 相关阅读:
    java基于ssm网上超市购物商城-计算机毕业设计
    我这样写代码,比直接使用 MyBatis 效率提高了 100 倍
    上海电力大学新增081200计算机科学与技术,一起来看看吧
    矩阵小专题(矩阵快速幂+矩阵加速)
    java word转pdf,word模板
    PMP考试有用吗?
    [极客大挑战 2020]
    使用 Tess4J 实现本地与远程图片的文字识别
    2022年中国移动互联网半年报告
    SpringBoot对Filter过滤器中的异常进行全局处理
  • 原文地址:https://blog.csdn.net/qq_64663346/article/details/139393516