我找不到我的想法的可靠答案,所以我在这里试试运气(顺便说一句,我使用的是Spring Boot 2.1、2.2,使用的是Spring 5.x):
因此,在使用RestTemplate
时,我首先想到的是通过RestTemplateBuilder
进行构建,尽管在简单的情况下,例如仅使用带参数的调用而没有特殊的自定义内容,可能是通过new RestTemplate()
进行了手动初始化也足够好。
但是,当谈到一个班级应该有多少个RestTemplate
实例时,我找不到有根据的建议。例如以下用例:“服务需要联系多个外部端点,这些端点可能需要也可能不需要类似的设置,例如超时,基本身份验证等。”
现在我有多个选项(要使用具有单个RestTemplate
和FQDN
端点或每个端点有多个rest模板实例的单个java类:
@RestClientTest
更加复杂,因为开箱即用的是java.lang.IllegalStateException: Unable to use auto-configured MockRestServiceServer since MockServerRestTemplateCustomizer has been bound to more than one RestTemplate
,可以固定它,但是测试过于复杂。@RestClientTest
可以直接使用,但是我们可能有太多类在做相同的事情,因为也许并非所有不同的端点真的需要不同的处理方式。仍然具有MockRestServiceServer
限制使我认为这是正确的事情,每个Java类使用一个RestTemplate
。RestTemplate
,但不是对每个端点,而是对每个唯一的端点集。现在,这是另一个最佳实践问题。端点何时如此靠近,可以由单个RestTemplate
提供服务?https://example.com
,然后是rest.exchange("/something", ...)
,rest.exchange("/somethingElse", ...)
,而呼叫转到https://example.com/something
,https://example.com/somethingElse
https://example.com/something
,https://someotherexample.com/somethingElse
,则在使用rest.exchange("https://example.com/something", ...)
,rest.exchange("https://someotherexample.com/somethingElse", ...)
时也没有root uri[您认为伙计们,您遵循一些最佳实践吗,如果可以,请争论clean/minimal code
,separation of concerns
,simple testing
等?
大多数标准应用程序都为Rest Consuming操作实现RestTemplate。
rest.exchange("https://example.com/something",...)
相反,您应该
public static String SOME_STRING_URL = "https://example.com/something"; rest.exchange(SOME_STRING_URL,...);
应用程序属性
rest.some-dynamic-url = "https://example.com/something"