持久性 EHcache 文档中的代码不起作用 java

Posted

技术标签:

【中文标题】持久性 EHcache 文档中的代码不起作用 java【英文标题】:Code in Persistent EHcache docs not working java 【发布时间】:2020-06-07 23:52:40 【问题描述】:

我想在我的java 项目中使用EHcache。他们有持久的存储支持。我已阅读文档 https://www.ehcache.org/documentation/2.7/configuration/fast-restart.html 找到了这段代码

Configuration cacheManagerConfig = new Configuration()
    .diskStore(new DiskStoreConfiguration()
        .path("/tmp/file.txt"));
CacheConfiguration cacheConfig = new CacheConfiguration()
    .name("my-cache")
    .maxBytesLocalHeap(16, MemoryUnit.MEGABYTES)
    .maxBytesLocalOffHeap(256, MemoryUnit.MEGABYTES)
    .persistence(new PersistenceConfiguration().strategy(Strategy.LOCALTEMPSWAP));

cacheManagerConfig.addCache(cacheConfig);

CacheManager cacheManager = new CacheManager(cacheManagerConfig);
Ehcache myCache = cacheManager.getEhcache("my-cache");

我已经导入了依赖,但它显示了很多错误。 我遇到的错误

'Configuration' is abstract; cannot be instantiated

请提供一些简单的步骤来使用这个库。我阅读了文档,但代码不起作用。帮我解决一些问题。

【问题讨论】:

我没有完整的上下文,但你能告诉我们更多关于你在哪里尝试这个配置的细节吗?它是一个 Spring Boot 项目吗?我建议首先开始设置 ehcache,然后尝试对其进行配置以支持持久存储。一些可以帮助您入门的博文:baeldung.com/spring-boot-ehcache 或 baeldung.com/ehcache 你在使用 ehcache 3 吗? (您链接的文档适用于 2.7 版) ehcache 3 版本.. 【参考方案1】:

找到答案。

    try(PersistentCacheManager persistentCacheManager =
                newCacheManagerBuilder()
                        .with(persistence("/tmp/myProjectCache"))
                        .withCache("test-cache",
                                newCacheConfigurationBuilder(
                                        String.class, String.class,
                                        newResourcePoolsBuilder()
                                                .heap(1, EntryUnit.ENTRIES)
                                                .offheap(1, MemoryUnit.MB)
                                                .disk(2, MemoryUnit.MB, true)
                                )
                        ).build(true)) 
        org.ehcache.Cache cache = persistentCacheManager.getCache("test-cache", String.class, String.class);

        cache.put("name1","steven");
        cache.put("name2","prince");

        System.out.println(cache.get("name1"));
        System.out.println(cache.get("name2"));
    

【讨论】:

以上是关于持久性 EHcache 文档中的代码不起作用 java的主要内容,如果未能解决你的问题,请参考以下文章

解决springboot中@ehcache不起作用的问题

Wildfly 8.1 + EHCache + 注释不起作用

使用 EhCache 进行 Spring Boot 缓存不起作用

Spring Ehcache中@Cacheable不起作用。

带有 Hibernate 和 Ehcache 的 Spring 数据 JPA 不起作用

ehcache 在 Tomcat Docker 映像中不起作用