我想在Spring CacheManager
中添加几个不同的LoadingCache
,但是我不知道如何使用CaffeineCacheManager
来实现这一点。看起来只有一个加载器可以用来刷新内容,但是我需要为每个缓存添加单独的加载器。是否可以在Spring缓存管理器中添加多个加载缓存?如果可以,那么怎么做?
CaffeineCacheManager cacheManage = new CaffeineCacheManager();
LoadingCache<String, Optional<Edition>> loadingCache1 =
Caffeine.newBuilder()
.maximumSize(150)
.refreshAfterWrite(5, TimeUnit.MINUTES)
.build(test -> this.testRepo.find(test));
LoadingCache<String, Optional<Edition>> loadingCache2 =
Caffeine.newBuilder()
.maximumSize(150)
.refreshAfterWrite(5, TimeUnit.MINUTES)
.build(test2 -> this.testRepo.find2(test2));
// How do I add to cache manager, and specify a name?
3条答案
按热度按时间neskvpey1#
是的,这是可能的。因为你需要微调每个缓存,你可能更擅长于自己定义它们。回到你的例子,下一步是:
然后你可以像往常一样使用它,例如。
如果您使用的是Sping Boot ,您可以将单个缓存公开为bean(因此
org.springframework.cache.Cache
实现),我们将检测它们并自动为您创建一个SimpleCacheManager
。请注意,此策略允许您在不同的实现中使用该高速缓存抽象。
first
可以是咖啡因缓存,second
可以是来自另一个提供程序的缓存。ymzxtsji2#
拥有这个类将允许您在需要的地方正常使用
@Cacheable("cacheA")
:vmpqdwk33#
感谢@rado,这是他回答的改进版本。这样我们就可以直接从应用程序属性配置该高速缓存
我们需要为此设置缓存属性
然后我们可以直接从外部配置文件进行配置
现在,您可以通过使用缓存名称来使用该高速缓存