欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

SpringCloudFeign远程调用实现详解,

来源: javaer 分享于  点击 18100 次 点评:77

SpringCloudFeign远程调用实现详解,


目录
  • 1. Feign远程调用
    • 1.1.Feign替代RestTemplate
    • 1.2.自定义配置
      • 1.2.1.配置文件方式
      • 1.2.2.Java代码方式
  • 2.Feign使用优化
    • 3. 最佳实践
      • 3.1.继承方式
        • 3.2.抽取方式
          • 3.3.实现基于抽取的最佳实践

          先来看我们以前利用RestTemplate发起远程调用的代码:

          存在下面的问题:

          • 代码可读性差,编程体验不统一
          • 参数复杂URL难以维护

          1. Feign远程调用

          Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign

          其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。

          1.1.Feign替代RestTemplate

          Fegin的使用步骤如下:

          1)引入依赖

          我们在order-service服务的pom文件中引入feign的依赖:

          <dependency>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-starter-openfeign</artifactId>
          </dependency>
          

          2)添加注解

          在order-service的启动类添加注解开启Feign的功能:

          3)编写Feign的客户端

          在order-service中新建一个接口,内容如下:

          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")
          public interface UserClient {
              @GetMapping("/user/{id}")
              User findById(@PathVariable("id") Long id);
          }

          这个客户端主要是基于SpringMVC的注解来声明远程调用的信息,比如:

          • 服务名称:userservice
          • 请求方式:GET
          • 请求路径:/user/{id}
          • 请求参数:Long id
          • 返回值类型:User

          这样,Feign就可以帮助我们发送http请求,无需自己使用RestTemplate来发送了。

          4)测试

          修改order-service中的OrderService类中的queryOrderById方法,使用Feign客户端代替RestTemplate:

          5)总结

          使用Feign的步骤:

          ① 引入依赖

          ② 添加@EnableFeignClients注解

          ③ 编写FeignClient接口

          ④ 使用FeignClient中定义的方法代替RestTemplate

          1.2.自定义配置

          Feign可以支持很多的自定义配置,如下表所示:

          相关文章

            暂无相关文章
          相关栏目:

          用户点评