java - Spring RestTemplate 实现与 RestOperations 接口(interface)

标签 java spring resttemplate

似乎网络上到处都有人们 Autowiring 实现类 RestTemplate 而不是它的接口(interface) RestOperations 的例子。即使在 Spring 手册和文档中,该接口(interface)也被称为“不经常使用”。像这里这样的官方指南https://spring.io/guides/gs/consuming-rest/有以下例子:

@Bean 
public RestTemplate restTemplate(RestTemplateBuilder builder) {
    return builder.build();
}
然后将它们注入(inject)到类中
@Autowired 
public SomeClass(RestTemplate rt) {
    this.rt = rt;
}
我一直认为在具体实现中布线是不好的做法。为什么这里的实现在 Spring 文档和更广泛的网络中如此普遍?

最佳答案

我不能为别人说话,他们可能没有想过,但是RestOperations在考虑可测试性时可能是有益的。正如文档所说:

Not often used directly, but a useful option to enhance testability, as it can easily be mocked or stubbed.


https://docs.spring.io/spring-framework/docs/5.2.0.RELEASE/javadoc-api/org/springframework/web/client/RestOperations.html

关于java - Spring RestTemplate 实现与 RestOperations 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57165954/

相关文章:

spring 配置服务器 git ssh 未知主机 key

java - Spring:如何在没有构造函数的情况下初始化属性?

spring - 在 Spring 中使用 RestTemplate。异常 - 没有足够的变量可扩展

java - 了解 Java 对 "closures"的近似

javascript - 我怎样才能从java类获取变量数据到javascript?

java - java.lang.UnsatisfiedLinkError:否GurobiJni/Tomcat

android - 如何发送带有参数的 getForObject 请求 Spring MVC

java - "setDataSource failed"异常

java - Spring MVC 3.2.3 Tiles 2 HTTP Status 500 - Servlet appServlet 的 Servlet.init() 引发异常

java - Spring RestTemplate 无法解码包含 "<!DOCTYPE ... dtd>"的 XML