使用假装而不是RestTemplate有什么优缺点

cod*_*ash 7 resttemplate spring-boot spring-cloud spring-cloud-feign

我知道Feign是声明性的,因此它为开发人员抽象了很多东西.但是,何时应该选择一个而不是另一个?虽然假装是声明性的,但它与oAuth存在严重问题.使用RestTemplate而不是Feign有哪些注意事项

Gon*_*n I 17

Feign 允许您抽象调用 REST 服务的机制。配置并注释 Feign 接口后,您可以通过进行简单的 Java 函数调用来调用 REST 服务。进行 REST 调用的实际实现是在运行时由 Feign 处理的。这意味着可以在不更改业务逻辑代码的情况下配置实现。

只需更改 Java 中的 Feign 配置或使用属性,您就可以添加编码/解码、日志记录和更改 REST 调用实现库。所有这一切仅通过配置完成,而调用服务的业务逻辑保持不变。由于 Feign 使用标准 Java 接口,因此在单元测试期间模拟它们也很容易。


Ali*_*ien 13

有一定的优势。

1.URL 不是硬编码的。

2.您不必为 feign 编写单元测试用例,因为没有要测试的代码,但是您必须编写集成测试。

3.我们可以使用Eureka Client ID代替URL。

4.Feign 处理实际代码。

5.Feign 自动与 Ribbon 和 Eureka 集成。

6.Feign 提供了一种非常简单的方式来调用 RESTful 服务。

  • 虽然所有优点都是有效的,但我看到 Feign 的一个缺点是它不支持基于缓存控制标头的缓存。 (4认同)
  • RestTemplate 可以使用 @LoadBalanced 完成#3。 (2认同)
  • 请编辑并随时添加更多要点来回答。 (2认同)

小智 7

RestTemplate用于进行同步调用。使用 RestTemplate 时,以编程方式构造 URL 参数,并将数据发送到其他服务。在更复杂的场景中,我们将不得不了解 RestTemplate 提供的 HTTP API 的详细信息,甚至是更低级别的 API

Feign是一个 Spring Cloud Netflix 库,用于为基于 REST 的服务调用提供更高级别的抽象。Spring Cloud Feign 遵循声明性原则。使用 Feign 时,我们在客户端编写声明式 REST 服务接口,并使用这些接口对客户端进行编程。开发人员无需担心实施...


And*_*ndy 6

使用Feignover的好处之一RestTemplate是,我们不需要编写任何实现来调用其他服务。因此无需编写任何单元测试,因为首先没有要测试的代码。但是,建议我们编写集成测试。


San*_*ama 6

使用 Feign-clients 相对于 Rest-templates 有很多优点。我将在下面列出这些。

  1. 开发人员无需担心实施。只是创建抽象 Feign 接口和少量注释 - 声明性原则。(如果你想要自定义配置,那么它会保存一些代码)

  2. 使用 Spring Cloud Eureka,Ribbon 客户端负载均衡器将配备 Feign 客户端。

  3. 无需担心单元测试,因为您无需测试任何实现。(有争议)

  4. 支持Feign注释和JAX-RS注释。

  5. 与 Spring Cloud 高度兼容且易于配置(特别是 Eureka 服务器注册表)

  6. 允许通过 @Configuration 类或应用程序属性进行 Feign 客户端配置。

  7. 允许我们添加拦截器。(通过 @Configuration 或应用程序属性添加拦截器。或者也可以使用 Spring Cloud 提供的拦截器。示例 - BasicAuthRequestInterceptor)

  8. Hystrix 支持后备机制。

  9. 记录

  10. 错误处理

Feign 是一个不错的选择,如果您对 JPA 及其解决查询的方式着迷,那么 Feign 就是适合您的工具。Feign 会完美地处理你的服务器请求。