Java mono.cache是否适用于Webclient响应?

Java mono.cache是否适用于Webclient响应?,java,spring-boot,project-reactor,spring-webclient,Java,Spring Boot,Project Reactor,Spring Webclient,我正在尝试缓存webclient调用返回的身份验证令牌响应 public Mono<Token> getToken() { return webclient.post().retrieve() .bodyToMono(Token.class) .cache(this::getTokenLiveDuration, t -> Duration.ZERO, () -> Duration.ZERO).log(); } public Mono&

我正在尝试缓存webclient调用返回的身份验证令牌响应

public Mono<Token> getToken() {
  return webclient.post().retrieve()
        .bodyToMono(Token.class)
        .cache(this::getTokenLiveDuration, t -> Duration.ZERO, () -> Duration.ZERO).log();
}

public Mono<MyResponse> execute() {
  return getToken().flatMap(token -> {
        webclient.post().header("Auth", token.getValue())
                 .retrieve()
                 .bodyToMono(MyResponse.class)
        }
}
public Mono getToken(){
返回webclient.post().retrieve()
.bodyToMono(Token.class)
.cache(this::getTokenLiveDuration,t->Duration.ZERO,()->Duration.ZERO).log();
}
公共单声道执行(){
返回getToken().flatMap(令牌->{
webclient.post().header(“Auth”,token.getValue())
.retrieve()
.bodyToMono(MyResponse.class)
}
}
但是,如果我在同一个实例中运行两次
execute()
,它们具有不同的令牌,这意味着缓存无法工作


使用
.cache
的正确方法是什么?缓存webclient响应的正确方法是什么?

这是因为每次调用
getToken
时,都会使用自己的缓存创建一个新的
Mono


使缓存有效的一种方法是为缓存的令牌
Mono
创建一个字段,并在execute方法中使用该
Mono

您是说我必须使用webclient初始化Mono字段吗?是的,例如在构造函数中。