JavaSpringWebFlux关于复制方法调用的问题
我使用Spring反应式框架创建了一个综合应用程序,以研究Webflux中提出的缓存机制。
我注意到,当我使用指向第三方URL的Webclient
时,使用它的方法会被调用两次,而指向我自己端点的WebClient
按预期每个请求只被调用一次
我想知道为什么会这样
下面是我的页面抽象代码,当webClient
与本地主机URL关联时,每个请求只调用一次方法getBody()
。但是当webClient与https://other.size关联时,这个方法会被调用两次,所以我看到了日志。信息消息两次:
public class Page {
private Mono<String> res;
public Page(WebClient webClient, String url) {
res = webClient.get()
.uri(url)
.retrieve()
.bodyToMono(String.class)
.cache();
}
public Mono<String> getBody() {
log.info("getting data");
return res;
}
}
# 1 楼答案
谢谢你的视频。这真的很有帮助
因此,如果您从浏览器点击
/tengri
端点,您将收到两次日志,我可以确认我在我的机器上看到了相同的行为但是,如果使用
curl
点击/tengri
,则只会获得一次日志行此外,查看浏览器上的网络流量,我可以看到对
/tengri
端点进行了第二次api调用当浏览器呈现html时,是否会出现一些额外的逻辑,这些逻辑将对
/tengri
进行第二次调用