带有ehcache的spring boot缓存找不到Builder名为xxx的缓存

时间:2018-10-13 19:40:38

标签: java spring spring-boot ehcache

在使用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());
}

}

1 个答案:

答案 0 :(得分:0)

我刚刚删除了实现的接口 CachingConfigurer,现在可以了。

  @EnableCaching
  @Configuration("CachingConfig")
  public class CachingConfig {


  }