有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    对我来说是个坏主意,因为:

    1. spring boot已经为您自动配置了WebClient.Builder。它还可以在这个构建器中pre-configureddefault codec用于将HTTP请求/响应转换为不同类型的java对象。自己创建意味着你需要自己配置这些东西

    2. 如果您真的想这样做,那么使用spring缓存抽象就太过分了,因为应用程序很可能不需要创建太多WebClient,这会导致JVM内存不足。因此,您不需要缓存提供的过期和逐出功能,只需使用一个简单的HashMap来保持它的简单

    official docs强烈建议注入预配置的WebClient.Builder来创建和配置WebClient。所以跟着它走。另请参见文档中的示例,了解如何操作