什么是RestTemplate中DefaultUriTemplateHandler的替代方案?

5

在Spring 5之前,配置RestTemplate访问单个REST主机的常规方法如下:

DefaultUriTemplateHandler uriTemplateHandler = new DefaultUriTemplateHandler();
uriTemplateHandler.setBaseUrl("http://host:port");
restTemplate.setUriTemplateHandler(uriTemplateHandler);

在进行REST调用时,可以使用restTemplate.getForObject("/api/foo")代替restTemplate.getForObject("http://host:port/api/foo")(并可能在某个地方集中配置REST根URL)

在Spring 5中,DefaultUriTemplateHandler已弃用,建议使用DefaultUriBuilderFactory进行替换。然而,虽然RestTemplate仍具有setUriTemplateHandler方法,但它没有接受UriBuilderFactory的setter,也没有类似于setBaseUrl的东西

在Spring 5中,这种配置模式的正确替代品是什么?

1个回答

7

显然,UriBuilderFactory 扩展了 UriTemplateHandler,因此虽然在 RestTemplate 中的setter方法保持不变,但可以在那里使用UriBuilderFactory实例:

restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory());

关于baseUrl设置,它已经被制成流畅的组件与UriBuilderFactory,因此整个设置现在只需一行:

restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory("http://host:port"));

他们确实应该更好地记录这个变化,尽管如此。

非常感谢。Atlassian 在其 Swagger 验证器中使用了已弃用的内容。甚至他们自己也不知道如何将其替换为正确的非废弃版本。 - Beezer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接