我使用 Caffeine 作为与 Spring Cache 集成的缓存管理器,以避免多次不必要的文件下载。下载文件后,我就有了它的路径,该路径由下载方法返回。
一旦缓存过期,我想删除文件。我试过了,removalListener
但似乎只有在手动清除缓存时才会触发。
这是我的缓存配置:
@Bean
fun getCacheBuilder() = Caffeine.newBuilder()
.expireAfterWrite(3, TimeUnit.SECONDS)
.removalListener { _: Any?, filePath: Any?, _: RemovalCause ->
Files.delete(Paths.get(filePath.toString()))
}
@Bean
fun getCacheManager(caffeine: Caffeine<Any, Any>): CacheManager {
val caffeineCacheManager = CaffeineCacheManager("myStoredData")
caffeineCacheManager.setCaffeine(caffeine)
return caffeineCacheManager
}
这段代码有问题吗?有没有办法在缓存过期时自动触发监听器?