小编joj*_*ojo的帖子

如何将 @Cacheable 与 Kotlin 挂起功能一起使用

我正在 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
}
Run Code Online (Sandbox Code Playgroud)

这是我想要缓存的函数:

@Cacheable(value = ["test"])
open suspend fun getString(id: String): String {
    return client.getString(id)
}
Run Code Online (Sandbox Code Playgroud)

但似乎缓存不起作用,因为我可以从日志中看到每次调用服务函数时都会调用客户端。不适@Cacheable用于暂停功能?或者我还缺少其他东西吗?

caching kotlin caffeine kotlin-coroutines

6
推荐指数
1
解决办法
6109
查看次数

标签 统计

caching ×1

caffeine ×1

kotlin ×1

kotlin-coroutines ×1