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
方法,但它没有设置者接受UriBuilderFactory
,UriBuilderFactory
也没有类似setBaseUrl
Spring 5中这种配置模式的正确替换是什么?
答案 0 :(得分:2)
显然,UriBuilderFactory
扩展了UriTemplateHandler
,所以虽然RestTemplate
中的setter方法保持不变,但可以在那里使用UriBuilderFactory
个实例:
restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory());
至于baseUrl设置,已经使用UriBuilderFactory
将其设置为流畅的组件,因此现在整个设置只需要一行:
restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory("http://host:port"));
但他们确实应该更好地记录这一变化。