当我像这样定义和调用客户端方法时:
webClient.get()
.uri(endpoint)
.headers(this::configureHttpHeaders)
.retrieve()
.bodyToMono(String.class)
retrieve
即使我对返回的 Mono 什么都不做,该方法也会被执行。
我原以为只有在某人(订阅者?)真正想要从 Mono 获取数据时才会调用它。
为什么它会立即被调用?我怎样才能改变这种行为?
有关更多上下文:在我的情况下,我只希望在触发 CacheFlux onCacheMissResume 时执行它:
Flux<T> defaulValue= client.getStringMono()
.flatMapIterable(mapper::readObjects);
CacheFlux.<String, T>lookup(key -> readFluxFromCache(cacheName, key), cacheKey)
.onCacheMissResume(defaulValue)
.andWriteWith((key, valueSignal) -> writeFluxToCache(cacheName, key, valueSignal))