【发布时间】:2020-10-15 13:26:09
【问题描述】:
我在 Kotlin 和 Spring Boot 项目中工作,我正在尝试使用 Caffeine 进行缓存。我有一个带有暂停功能的服务,可以进行 http 调用。这是我的配置:
@Bean
open fun caffeineConfig(): @NonNull Caffeine<Any, Any> {
return Caffeine.newBuilder().expireAfterWrite(60, TimeUnit.SECONDS)
}
@Bean
open fun cacheManager(caffeine: Caffeine<Any, Any>): CacheManager {
val caffeineCacheManager = CaffeineCacheManager()
caffeineCacheManager.getCache("test")
caffeineCacheManager.setCaffeine(caffeine)
return caffeineCacheManager
}
这是我要缓存的函数:
@Cacheable(value = ["test"])
open suspend fun getString(id: String): String {
return client.getString(id)
}
但似乎缓存不起作用,因为我可以从日志中看到每次调用服务函数时都会调用客户端。 @Cacheable 是否不适用于挂起功能?还是我错过了什么?
【问题讨论】:
标签: kotlin caching kotlin-coroutines caffeine