У меня есть такой метод:
fun getActiveVersionWithCacheMiss(type: String): Mono<ActiveVersion> {
return activeVersionRepository.findByType(type)
.switchIfEmpty(
Mono.defer(return persist(ActiveVersion(type,1)))
)
}
Метод persist - это простой метод, который сохраняет активную версию:
fun persist(activeVersion: ActiveVersion): Mono<ActiveVersion>{...}
В моем тесте я смоделировал activeVersionRepository, чтобы вернуть простое значение для findByType. Во время отладки activeVersionRepository.findByType(type).block()
оценивает значение и определенно не является пустым. Мне интересно, почему, несмотря на использование defer, switchIfEmpty все еще вызывается?