• Spring Cloud OpenFeign(声明式服务调用)


    一、介绍

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

    二、使用 

    (1)导入依赖


        org.springframework.boot
        <artifactId>spring-boot-starter-parent
        2.3.12.RELEASE


       
           
                org.springframework.cloud
                spring-cloud-dependencies
                Hoxton.SR12
                pom
                import
           

       



       
            org.springframework.boot
            spring-boot-starter-web
       

       
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
       

       
            org.springframework.cloud
            spring-cloud-starter-openfeign
       

    (2)在启动类上添加扫描注解

    1. /**
    2. * EnableFeignClients - 开启Openfeign技术。让spring cloud扫描Openfeign相关注解,
    3. * 生成动态代理实现对象。
    4. * 可选属性 basePackages = {"feign接口所在包1", "feign接口所在包2"}
    5. * 默认扫描当前类型所在包,及所有子孙包。
    6. */
    7. @SpringBootApplication
    8. @EnableEurekaClient
    9. @EnableFeignClients(basePackages = {"com.bjsxt.feign"})
    10. public class OpenFeignAppClientApp {
    11. public static void main(String[] args) {
    12. SpringApplication.run(OpenFeignAppClientApp.class, args);
    13. }
    14. }

    (3)编写本地接口

    1. /**
    2. * 定义接口,基于注解,实现声明式远程服务调用。
    3. * 技术是OpenFeign。
    4. * 需要确定的事情:
    5. * 1. 访问的远程服务名称是什么。
    6. * 2. 访问的远程服务具体地址是什么。
    7. * 3. 访问的远程服务请求方式是什么。
    8. * 4. 访问的远程服务,参数是什么。
    9. * 5. 访问的远程服务,返回结果类型是什么。
    10. *
    11. * FeignClient - 代表当前的接口是一个OpenFeign客户端,要访问远程的服务。
    12. * 具体的实现类对象,由spring cloud动态生成代理对象来实现。
    13. * 必要属性: value - 要访问的远程服务命名是什么。
    14. */
    15. @FeignClient("application-service")
    16. public interface AppServiceOpenfeignClient {
    17. /**
    18. * 定义方法。使用SpringMVC注解+方法定义,实现远程服务访问规则定义。
    19. * 建议写法: 找到要访问的控制器。复制对应的方法签名即可。
    20. *
    21. * GetMapping - 约束了请求方式
    22. * 注解属性value - 约束了请求的具体地址
    23. * 方法返回值 - 约束了远程服务返回结果类型
    24. * 方法参数表 - 约束了远程服务的请求参数
    25. */
    26. @GetMapping("/getNoParams")
    27. public String getNoParams();
    28. /**
    29. * post请求,无参数
    30. * @return
    31. */
    32. @PostMapping("/postNoParams")
    33. public String postNoParams();
    34. }

    (4)本地接口注意事项

    形参需要添加对应注解如@RequestParam,@RequestBody,@PathVariable等。

    三、通讯优化

    (1)配置OpenFeign请求-应答的GZIP压缩

    # 配置openfeign请求和应答的gzip压缩处理
    feign:
      compression:
        request:
          enabled: true  # 开启请求压缩处理。默认false
          min-request-size: 128  # 请求容量多少,开始压缩。默认2048字节
          mime-types: text/html, text/xml, text/plain, text/css, application/json # 请求头content type是什么,做压缩处理
        response:
          enabled: true # 开启响应压缩处理。默认false

    (2)Tomcat服务器GZIP优化配置

    server:
      compression:
        enabled: true  # 是否开启响应压缩处理。默认false
        mime-types: text/html, text/xml, text/plain, text/css, text/javascript, application/javascript, application/json, application/xml # 响应content type什么类型,做压缩处理。
        min-response-size: 128  # 响应容量多大,做压缩处理。 默认2048字节

  • 相关阅读:
    【PI仿真笔记2-电容模型2】
    牛视系统源码。抖音矩阵系统,成本无限制作视频。here
    一图get招商局客户经营管理模式转型新成果
    〔020〕Stable Diffusion 之 骨骼姿势 篇
    【博客481】prometheus-----数据压缩算法与搜索算法
    URL.createObjectURL()和URL.revokeObjectURL()
    C++程序员修炼手册--成员类型转换
    剑指 Offer 33. 二叉搜索树的后序遍历序列
    (迷宫问题)DFS(递归+非递归)
    Kubernetes(k8s)的三种资源管理方式
  • 原文地址:https://blog.csdn.net/weixin_53455615/article/details/128092913