Java mono.cache是否适用于Webclient响应?
我正在尝试缓存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&
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字段吗?是的,例如在构造函数中。