我们需要实现几种具有不同缓存时间的方法。每种方法都带有注释,@Cacheable
我们当前的解决方案包括多个CacheManager
设置在CachingConfigurerSupport
.
public class CachingConfiguration extends CachingConfigurerSupport {
@Override
@Bean
public CacheManager cacheManager() {
CaffeineCacheManager cacheManager = new CaffeineCacheManager();
cacheManager.setCaffeine(Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.DAYS));
return cacheManager;
}
@Bean
public CacheManager anotherCache() {
CaffeineCacheManager cacheManager = new CaffeineCacheManager();
cacheManager.setCaffeine(Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.MINUTES));
return cacheManager;
}
}
注释然后@Cacheable
包含 cacheManager:@Cacheable(cacheNames = "someCache", cacheManager = "anotherCache")
基本上这很好,但如果你忘记了cacheManager
参数等,也会出错。
所以我目前试图找到一个更好的解决方案,但据我所知,目前还没有普遍接受的方法。
CaffeineCacheManager
恕我直言,与 eg 相比的主要优点SimpleCacheManager
是可以定义基本配置,然后延迟初始化其他缓存。但是,如果您能够设置永远不会重新初始化的附加缓存,那不是很好吗?
这些缓存必须优先使用并在CachingConfigurerSupport
.
也许我遗漏了一些东西,但这不应该解决已经在不同形式的几个线程中讨论过的问题吗?