【发布时间】:2021-12-17 09:53:05
【问题描述】:
我遇到了一个问题,我的服务上的方法具有如下注释:
@Cacheable(value = "myCache", key = "'myCache' + #listType", unless = "#result.getMyList().size() == 0")
在我的 EhCacheConfig 中,如下所示:
@Bean
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
List<Cache> caches = new ArrayList<Cache>();
caches.add(new ConcurrentMapCache("myCache"));
cacheManager.setCaches(caches);
return cacheManager;
}
缓存按我的预期工作,但现在我需要一个持久存储,我只能找到如何使用 PersistentCacheManager 来完成它。当我尝试按照EhCache documentation 实现它时,我不断收到错误消息:
"Cannot find cache named 'myCache' for Builder
这是我在实现 PersistentCacheManager 时的 EhCacheConfig:
@Bean
public PersistentCacheManager cacheManager() {
PersistentCacheManager persistentCacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.with(CacheManagerBuilder.persistence(new File(storagePath, "myData")))
.withCache("myCache", CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, NotificationListResponse.class,
ResourcePoolsBuilder.newResourcePoolsBuilder()
.disk(10, MemoryUnit.MB, true))
)
.build();
persistentCacheManager.init(true);
return persistentCacheManager;
}
【问题讨论】:
-
这个问题可能是由拼写错误引起的吗?您在配置中使用
notificationList,而不是myCache。 -
对不起,我把缓存的名字换成了这里添加,漏掉了这个。但它们都与我的代码匹配
标签: java spring-boot ehcache ehcache-3