当前位置: 首页 > 知识库问答 >
问题:

带有ehcache的Spring Boot缓存找不到生成器的名为xxx的缓存

赏航
2023-03-14

我得到一个错误,而使用java配置为ehache与Spring引导和Spring缓存启动无法找到名为bpConfigs的缓存为Builder[公共java.util.列表com.xxx.bp.repository.BpConfigRepository.getEligibleConfig()]缓存=[bpConfigs]|key="|keyGenerator="|cacheManager="|cacheResolver="|条件="|除非="|同步='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个答案

吴炎彬
2023-03-14

我刚刚删除了实现的接口cachingconfiguer,现在一切正常。

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


  }
 类似资料:
  • 当我调用我用注释的方法时,我知道缓存没有被使用,因为我在方法内部进行了打印,如果使用了缓存,就不应该打印它。 在日志中,我知道缓存正在初始化 我应该提到调用该方法的方法是常规Java

  • 我正在将spring 4.1与ehcache一起使用。我可以用整数键缓存字符串值,但每当我尝试缓存对象时,它都会失败,不会出现任何错误。我保存在缓存中的模型(POJO)确实实现了hashcode、equals和tostring函数。 ehcache配置如下 Spring配置如下所示 我要缓存的类和方法 如果我将getPerson方法的返回值从Party对象替换为String,它就会工作。有什么想法

  • 我有一个Spring boot应用程序,我想在它的存储库方法上使用Spring bot cache。我在Spring boot应用程序中指定了@enablecaching annotaion,当我试图在我的存储库方法上使用@cacheable annotation时,它会抛出如下错误 java.lang.IllegalArgumentException:找不到Builder的名为“cache”的缓

  • 主要问题是EHCAHCE2.6.2是否基于ehcache配置驱逐过期元素;还是我必须按程序驱逐? 在阅读了文档的各个部分(数据寿命和缓存大小)之后,我们将当前配置设置为使用TTI/TTL和CacheManager级别MaxBytesLocalHeap=1024M。在设置了这个之后,我希望ehcache只能使用1GB的堆空间进行缓存,但是从测试(和prodcution)中,我们总是看到JVM堆已经满

  • 我在android Studio中的gradle构建失败,因为它无法访问缓存。属性文件。我尝试过使所有缓存无效并重试,但没有成功。我还重新安装了所有SDK工具。这是我得到的错误 错误:java。io。FileNotFoundException:C:\Users\Siddharth\AndroidStudioProjects\IntentSignment。gradle\2.4\taskArtifac

  • 问题内容: 我正在生产中运行大型VM,并且想在运行时了解有关我的缓存大小的更多信息。我的缓存都是基于ehache 在运行时查看单个缓存大小的最佳方法是什么。使用JMX或API 是否可以通过对CacheManager的纯Java调用来配置任何选项,或者(暂时忽略JMX)必须以大字符串构建XML配置? 问题答案: 是的,使用Ehcache,您可以配置缓存并仅通过Java代码(没有XML配置)来检索其大