gpt4 book ai didi

caching - Spring引导缓存无法为Builder解析缓存

转载 作者:行者123 更新时间:2023-12-04 01:11:05 24 4
gpt4 key购买 nike

根据 link ,在 spring boot 中使用缓存的最简单配置是使用 CacheManager (一个缓存 Map 将在这个类中初始化):

@Configuration
@EnableCaching
public class CacheService extends CachingConfigurerSupport {
@Bean
public CacheManager concurrentMapCacheManager() {
ConcurrentMapCacheManager cmcm = new ConcurrentMapCacheManager();
return cmcm;
}

@Bean
@Primary
public CacheManager guavaCacheManager() {
GuavaCacheManager gcm = new GuavaCacheManager();
return gcm;
}
}

并在 serviceImpl.java :
 @Cacheable(cacheManager="guavaCacheManager")
@Override
public List<RoleVO> getDataForCreateNewOperator() {
...
}

但它抛出:
java.lang.IllegalStateException: No cache could be resolved for 'Builder[public java.util.List getDataForCreateNewOperator()] caches=[] | key='' | keyGenerator='' | cacheManager='guavaCacheManager' | cacheResolver='' | condition='' | unless='' | sync='false'' using resolver 'org.springframework.cache.interceptor.SimpleCacheResolver@38466d10'. At least one cache should be provided per cache operation.

编辑:
如果我在 cacheManager 中分配一个 cacheName,并在建议的方法中使用它,异常就会消失。但是bean中的所有方法都会被缓存,而我只分配了 @Cacheable在一种方法上。

最佳答案

我正在使用 Ehcache,我遇到了同样的问题,因为我有两个不同的
缓存和可缓存的名称。

Please make you use same name for cache and Cacheable.

@Cacheable("codetable")

<cache name="codetable"
maxEntriesLocalHeap="100"
maxEntriesLocalDisk="1000"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off">
<persistence strategy="localTempSwap" />
</cache>

关于caching - Spring引导缓存无法为Builder解析缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45232644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com