什么是RestTemplate弃用的DefaultUriTemplateHandler的替代品?

时间:2018-03-07 14:51:24

标签: spring rest spring-mvc

Pre-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方法,但它没有设置者接受UriBuilderFactoryUriBuilderFactory也没有类似setBaseUrl

的内容

Spring 5中这种配置模式的正确替换是什么?

1 个答案:

答案 0 :(得分:2)

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

restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory());

至于baseUrl设置,已经使用UriBuilderFactory将其设置为流畅的组件,因此现在整个设置只需要一行:

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

但他们确实应该更好地记录这一变化。