java - CaffeineCacheManager() 构造函数需要 cacheName 吗?
问题描述
我有一个 MultipleCacheManager 类,如下所示:
@EnableCaching
public class MultipleCacheManagerConfig {
@Bean
@Primary
public CacheManager mainCacheManager() {
// instantiate caffeine manager and add in specifications
CaffeineCacheManager cacheManager = new CaffeineCacheManager("example1", "example2");
cacheManager.setCaffeine(Caffeine.newBuilder()
.expireAfterWrite(4, TimeUnit.HOURS)
.recordStats());
return cacheManager;
}
// these are examples of alternate cache managers if another cache needs to be configured differently.
public CacheManager alternateCaffeineManager() {
CaffeineCacheManager cacheManager = new CaffeineCacheManager("example3");
cacheManager.setCaffeine(Caffeine.newBuilder()
.expireAfterWrite(1, TimeUnit.HOURS)
.recordStats());
return cacheManager;
}
我是否需要在 CaffeieneCacheManager() 构造函数中实际传递我的缓存名称?只要@Cacheable
有财产@Cacheable(cacheName = "example1", cacheManager = "mainCacheManager")
就重要吗?缓存管理器在技术上已经连接到该名称。
解决方案
您总是可以首先在文档中找到有用的信息
public void setCacheNames(@Nullable Collection cacheNames) 指定此 CacheManager 的“静态”模式的缓存名称集。调用此方法后,缓存的数量及其名称将被固定,在运行时不会创建更多的缓存区域。
还
CaffeineCacheManager(String... cacheNames) 构造一个静态 CaffeineCacheManager,仅管理指定缓存名称的缓存。
如您所见,在构造函数中提供 cacheNames 意味着这个 cacheManager 将来只能处理那些 cacheNames。因此,您无法指示该 cacheManager 将来动态处理其他 cacheNames。
您仍然需要cacheNames
通过批注,尽管
@Cacheable(cacheName = "example1", cacheManager = "mainCacheManager")
好像您有多个使用此 cacheManager 的方法一样,这两个方法每个都有自己的 cacheName 是有意义的。
@Cacheable(cacheName = "example1", cacheManager = "mainCacheManager")
public String method1( String a) {
....
}
@Cacheable(cacheName = "example2", cacheManager = "mainCacheManager")
public String method2( String b) {
....
}
这 2 个不同的 cacheNames 通知 cacheManager 它应该处理 2 个不同的缓存命名空间,并且注释通知 cacheManager 哪个 cacheName 与此方法相关。
推荐阅读
- android - 在颤动中测量图像中的角度
- react-native - 找不到 react-native.jar (com.facebook.react:react-native:0.62.0)
- python - python中的'in'关键字-身份还是相等?
- c - 无法使用 libcurses 打印包含空格的句子
- python - 如何查看一个热编码的类名?
- sql - 使用 SQL / PL SQL 验证日期
- javascript - 从客户端 PC 下载 blob 文件时出现未经授权的访问错误
- python - Python 错误没有找到带有标签的句柄以使用 matplotlib 放入图例
- html - React Image Container Div 切断
- python - 如何使用 wait_for