我找不到我的想法的可靠答案,所以我在这里试试运气(顺便说一句,我使用的是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 您认为家伙是什么,您遵循一些最佳实践吗?如果可以,请争论干净/最小的代码,关注点分离,简单的测试等?