Java Spring:如何从RestTempalte获取rootUri
我正在使用此配置类初始化RestTemplate:Java Spring:如何从RestTempalte获取rootUri,java,spring,resttemplate,Java,Spring,Resttemplate,我正在使用此配置类初始化RestTemplate: @Configuration public class RestTemplateConfig { @Value("${endpoint-url}") private String endpointUrl; @Bean public RestTemplate restTemplate(RestTemplateBuilder builder) { return builder .rootUri(endpo
@Configuration
public class RestTemplateConfig {
@Value("${endpoint-url}")
private String endpointUrl;
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder
.rootUri(endpointUrl)
.messageConverters(new MappingJackson2HttpMessageConverter())
.build();
}
}
在我的一个服务方法中,我使用以下代码:
RootUriTemplateHandler handler = (RootUriTemplateHandler) restTemplate.getUriTemplateHandler();
String uri = handler.getRootUri();
restTemplate.postForLocation(uri, request);
获取此URI。有没有更简单的方法来获取这个rootUri(无需强制转换)?或者直接向rootUri执行post请求?听起来像是试图使用
restemplate
传递${endpoint url}
的值。看起来有些尴尬的演员,但你也许可以考虑其中的一个选择:
- 创建一个提供程序,用于封装
和您的endpointUrl
,并在需要restTemplate
或endpointUrl
的任何位置插入此提供程序。例如:restTemplate
@Component public class RestTemplateProvider { @Value("${endpoint-url}") private String endpointUrl; private final RestTemplate restTemplate; @Autowired public RestTemplateProvider(RestTemplateBuilder restTemplateBuilder) { this.restTemplate = restTemplateBuilder.rootUri(endpointUrl) .messageConverters(new MappingJackson2HttpMessageConverter()) .build(); } public RestTemplate provide() { return restTemplate; } public String getEndpointUrl() { return endpointUrl; } }
- 注入
@Value(${endpointUrl}”)私有字符串endpointUrl代码>任何服务类都需要它
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder,
@Value("${endpoint-url}") String endpointUrl) {
return builder
.rootUri(endpointUrl)
.messageConverters(new MappingJackson2HttpMessageConverter())
.build();
}
}
在您的服务方法中:
// Make a POST call to ${endpoint-url}/foobar
String uri = "/foobar"; // The leading "/" is important!
restTemplate.postForLocation(uri, request);
restemplate.getUriTemplateHandler().expand(“/”)实际上,这是唯一一个简单回答标题中所述问题的答案。