在使用Spring Boot和Spring cache Starter的ehcache使用Java配置时遇到错误 无法为Builder [public java.util.List com.xxx.bp.repository.BpConfigRepository.getEligibleConfig()]找到名为“ bpConfigs”的缓存。caches = [bpConfigs] |键=''| keyGenerator =''| | cacheManager =''| | cacheResolver =''|条件=''|除非=''| sync ='false'
我的配置:
@EnableCaching
@Configuration
public class CachingConfig implements CachingConfigurer {
private static final int MAX_ENTRIES = 1000;
private static final int LIVE_IN_SEC = 10 * 60;
@Bean
public net.sf.ehcache.CacheManager ehCacheManager() {
net.sf.ehcache.config.Configuration config = new Configuration();
config.addCache(createBpConfigsCache());
return net.sf.ehcache.CacheManager.newInstance(config);
}
@Bean
@Override
public CacheManager cacheManager() {
return new EhCacheCacheManager(ehCacheManager());
}
@Bean
@Override
public CacheResolver cacheResolver() {
return new SimpleCacheResolver(cacheManager());
}
@Bean
@Override
public KeyGenerator keyGenerator() {
return new SimpleKeyGenerator();
}
@Bean
@Override
public CacheErrorHandler errorHandler() {
return new SimpleCacheErrorHandler();
}
private CacheConfiguration createBpConfigsCache() {
CacheConfiguration cfg = new CacheConfiguration();
cfg.setName("bpConfigs");
cfg.setMemoryStoreEvictionPolicy("LRU");
cfg.setTransactionalMode("OFF");
cfg.setEternal(false);
cfg.setTimeToLiveSeconds(LIVE_IN_SEC);
cfg.setMaxEntriesLocalHeap(MAX_ENTRIES);
return cfg;
}
}
我的方法:
@Repository
@CacheConfig(cacheNames ="bpConfigs")
public class BphConfigRepository {
@Cacheable
public List<LoyaltyEli> getbPConfig() {
return jdbcTemplate.query("select XXX,YYY from TABLE", new myMapper());
}
}
答案 0 :(得分:0)
我刚刚删除了实现的接口 CachingConfigurer,现在可以了。
@EnableCaching
@Configuration("CachingConfig")
public class CachingConfig {
}