java缓存webclient创建是个好主意吗
我正在使用SpringWebClient调用外部API。我有一个返回webclient的构建器。我的问题是,将创建的webclient缓存到特定URL是一个好主意。下面是我的代码
@Cacheable(value = "somevalue", cacheManager = "cachemnager", key = "#url")
public WebClient getWebClient(String url, Map<String, String> headers,List<ExchangeFilterFunction> filterFunctions) {
return WebClient.builder()
.baseUrl(url)
.defaultHeaders(addsome headers)
.filters(list -> list.addAll(filterFunctions))
.build();
}
此外,我还必须使用不同的url/params/Header调用多个API,因此我还必须创建多个webclient
# 1 楼答案
对我来说是个坏主意,因为:
spring boot已经为您自动配置了
WebClient.Builder
。它还可以在这个构建器中pre-configured
default codec用于将HTTP请求/响应转换为不同类型的java对象。自己创建意味着你需要自己配置这些东西如果您真的想这样做,那么使用spring缓存抽象就太过分了,因为应用程序很可能不需要创建太多
WebClient
,这会导致JVM内存不足。因此,您不需要缓存提供的过期和逐出功能,只需使用一个简单的HashMap
来保持它的简单official docs强烈建议注入预配置的
WebClient.Builder
来创建和配置WebClient。所以跟着它走。另请参见文档中的示例,了解如何操作