gpt4 book ai didi

java - 使用 spring RestTemplate 的休息客户端最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:12:45 26 4
gpt4 key购买 nike

我已经阅读了一些关于在使用 SPRING 管理 bean 的 java web 应用程序中实现 REST 客户端的教程。

我发现的每个示例,每次执行 REST 请求时都会创建新的 RestTemplate。

通常 web 应用程序使用单例 spring bean。

所以我想知道什么时候在 Spring 中使用 RestTemplate 配置应用程序的最佳实践是什么?
使用单例 RestTemplate ?
在每个请求中创建 RestTemplate。 ?

请告知并描述所有情况。

最佳答案

执行此操作的最佳方法之一是创建一个将返回 RestTemplate 的 bean,然后将其 Autowiring 到您需要的任何类中。

是这样的。

@Configuration
public class ProductServiceConfig {

@Value("${product.username}")
private String productServiceUsername;

@Value("${product.password}")
private String productServicePassword;

@Bean(name = "restTemplateForProductService")
public RestTemplate prepareRestTemplateForProductService() {

BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(productServiceUsername, productServicePassword));

RequestConfig.Builder requestBuilder = RequestConfig.custom();
requestBuilder = requestBuilder.setConnectTimeout(1000);

HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
httpClientBuilder.setDefaultRequestConfig(requestBuilder.build());
CloseableHttpClient httpClient = httpClientBuilder.build();

HttpComponentsClientHttpRequestFactory rf = new HttpComponentsClientHttpRequestFactory(httpClient);

return new RestTemplate(rf);
}
}

通过这种方式,您可以为您的休息调用设置不同的参数,例如超时或凭据等。当您想要使用时,您可以这样做

@Autowired
RestTemplate restTemplateForProductService;

restTemplateForProductService.......

与使用 new RestTemplate () 相比,它的另一个优点是如果您必须通过 REST 调用不同的服务,那么您可以定义多个返回 RestTemplates 的 bean(具有不同的配置)并使用姓名

关于java - 使用 spring RestTemplate 的休息客户端最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47388545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com