Spring Boot Rest模板最佳实践

时间:2019-12-02 10:43:30

标签: spring spring-boot resttemplate

我找不到我的想法的可靠答案,所以我在这里试试运气(顺便说一句,我使用的是Spring Boot 2.1、2.2,使用的是Spring 5.x):

因此,在使用RestTemplate时,我的第一个想法是通过RestTemplateBuilder进行构建,尽管对于简单的情况(例如仅带有参数的调用而没有特殊的自定义内容),可能是手动初始化通过new RestTemplate()也足够。

但是,当谈到一个班级应该有多少个RestTemplate实例时,我找不到有根据的建议。例如以下用例: “服务需要联系多个外部端点,这些端点可能需要也可能不需要类似的设置,例如超时,基本身份验证等。”

现在我有多个选择(要使用具有单个RestTemplateFQDN端点或每个端点有多个rest模板实例的单个java类):

  • 一个包含键映射的单个Java类->每个端点的rest模板实例-这种最小的方法使@RestClientTest更加复杂,因为开箱即用了java.lang.IllegalStateException: Unable to use auto-configured MockRestServiceServer since MockServerRestTemplateCustomizer has been bound to more than one RestTemplate,可以解决,但会使测试复杂化。
  • 每个其余模板有多个java类,这在某种程度上是关注点分离,@RestClientTest可以立即使用,但是我们可能有太多类在做相同的事情,因为可能不是全部不同的端点确实需要不同的处理方式。仍然有MockRestServiceServer的限制使我认为这是正确的事情,每个Java类使用一个RestTemplate
  • 每个Java类
  • (修改后的上标点)仍使用单个RestTemplate,但不是每个端点都使用,而是每个唯一的端点集都使用。现在,这是另一个最佳实践问题。端点何时如此靠近,可以由单个RestTemplate提供服务?
    • 如果根uri相同,例如https://example.com,然后依次rest.exchange("/something", ...)rest.exchange("/somethingElse", ...),而呼叫转到https://example.com/somethinghttps://example.com/somethingElse
    • 如果响应处理相同,即使调用必须转到https://example.com/somethinghttps://someotherexample.com/somethingElse,则在使用rest.exchange("https://example.com/something", ...)rest.exchange("https://someotherexample.com/somethingElse", ...)时没有root uri
  • 其他组合

您认为家伙是什么,您遵循一些最佳实践吗?如果可以,请争论干净/最小的代码,关注点分离,简单的测试等?

0 个答案:

没有答案