【发布时间】:2018-04-03 16:57:34
【问题描述】:
我知道 Feign 是声明性的,因此它为开发人员抽象了很多东西。但是,什么时候应该选择一个而不是另一个?尽管 feign 是声明性的,但它与 oAuth 存在严重问题。在 Feign 上使用 RestTemplate 有哪些注意事项
【问题讨论】:
标签: spring-boot spring-cloud resttemplate spring-cloud-feign
我知道 Feign 是声明性的,因此它为开发人员抽象了很多东西。但是,什么时候应该选择一个而不是另一个?尽管 feign 是声明性的,但它与 oAuth 存在严重问题。在 Feign 上使用 RestTemplate 有哪些注意事项
【问题讨论】:
标签: spring-boot spring-cloud resttemplate spring-cloud-feign
Feign 允许您抽象调用 REST 服务的机制。一旦你配置和注解了 Feign 接口,你就可以通过一个简单的 Java 函数调用来调用一个 REST 服务。进行 REST 调用的实际实现由 Feign 在运行时处理。这意味着可以在不更改业务逻辑代码的情况下配置实现。
只需更改 Java 中的 Feign 配置或使用属性,您就可以添加编码/解码、日志记录和更改 REST 调用实现库。这一切只通过配置完成,调用服务的业务逻辑保持不变。
由于 Feign 使用标准 Java 接口,因此在单元测试期间也很容易模拟它们。
【讨论】:
有一定的优势。
1.URL 不是硬编码的。
2.你不必为 feign 编写单元测试用例,因为没有要测试的代码,但是你必须编写集成测试。
3.我们可以使用Eureka Client ID代替URL。
4.Feign 处理实际代码。
5.Feign 自动与 Ribbon 和 Eureka 集成。
6.Feign 提供了一种非常简单的方式来调用 RESTful 服务。
【讨论】:
使用Feign 优于RestTemplate 的优点之一是,我们不需要编写任何实现来调用其他服务。所以有没有
需要编写任何单元测试,因为首先没有要测试的代码。但是,建议我们编写集成测试。
【讨论】:
使用 Feign-clients 而不是 rest-templates 有很多优点。我将在下面列出。
开发人员不必担心实施。只是为了创建抽象的 Feign 接口和少量注释 - 声明式 原则。 (如果您想要自定义配置,那么它将保持 一些代码)
使用 Spring Cloud Eureka,Ribbon 客户端负载均衡器将配备 Feign 客户端。
无需担心单元测试,因为您无需测试任何实现。 (有争议)
支持 Feign 注解和 JAX-RS 注解。
与 Spring Cloud 高度兼容且易于配置(特别是与 Eureka 服务器注册表)
允许通过 @Configuration 类或应用程序属性进行 Feign 客户端配置。
允许我们添加拦截器。 (通过@Configuration 或应用程序属性添加拦截器。或者可以使用 Spring Cloud 也提供了拦截器。例子 - BasicAuthRequestInterceptor)
Hystrix 支持回退机制。
记录
错误处理
Feign 是一个不错的选择,如果您对 JPA 及其解决查询的方式着迷,那么 Feign 就是您的工具。 Feign 将完美地处理您的服务器请求。
【讨论】:
RestTemplate 用于进行同步调用。使用 RestTemplate 时,URL 参数以编程方式构造,并将数据发送到其他服务。在更复杂的场景中,我们将不得不了解 RestTemplate 提供的 HTTP API 的详细信息,甚至是更低级别的 API。
Feign 是一个 Spring Cloud Netflix 库,用于为基于 REST 的服务调用提供更高级别的抽象。 Spring Cloud Feign 遵循声明性原则。在使用 Feign 时,我们在客户端编写声明式 REST 服务接口,并使用这些接口对客户端进行编程。开发人员不必担心实现...
【讨论】: