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

带ehcache的Spring不缓存对象

姜景辉
2023-03-14

我正在将spring 4.1与ehcache一起使用。我可以用整数键缓存字符串值,但每当我尝试缓存对象时,它都会失败,不会出现任何错误。我保存在缓存中的模型(POJO)确实实现了hashcode、equals和tostring函数。

ehcache配置如下

<diskStore path="E:/ymserviceslog" />

<defaultCache maxElementsInMemory="50" eternal="false"
overflowToDisk="false" memoryStoreEvictionPolicy="LFU" />

<cache name="test" maxElementsInMemory="1000" eternal="false"
overflowToDisk="true" memoryStoreEvictionPolicy="LRU"
timeToLiveSeconds="3000" diskPersistent="true" />

Spring配置如下所示

<cache:annotation-driven proxy-target-class="true"/>
<context:component-scan base-package="com.ashitosh.ym.dao" />

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
            <property name="cacheManager" ref="ehcache" />
</bean>

<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
    <property name="configLocation" value="classpath:ehcache.xml" />
    <property name="shared" value="true"/>
</bean>

<bean id="cachedao" class="com.ashitosh.ym.dao.Cache"/>

我要缓存的类和方法

public class Cache implements Icache {

    @Override
    @Cacheable(value = "test", key="#id")
    public Party getPerson(int id) {
        Party party = new Party("data",1);
        return party;
    }

}

如果我将getPerson方法的返回值从Party对象替换为String,它就会工作。有什么想法吗?

共有1个答案

桓高澹
2023-03-14

我解决了!我需要为需要缓存的对象类实现可序列化。

public class Party implements Serializable {

    private static final long serialVersionUID = 1L;

...

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

  • 我得到一个错误,而使用java配置为ehache与Spring引导和Spring缓存启动无法找到名为bpConfigs的缓存为Builder[公共java.util.列表com.xxx.bp.repository.BpConfigRepository.getEligibleConfig()]缓存=[bpConfigs]|key="|keyGenerator="|cacheManager="|cac

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

  • 问题内容: 我需要在应用程序中缓存一些数据,并且我正在考虑使用Ehcache。我有几个问题: 我是否需要其他服务器进行Ehcache? 我是否需要其他客户端来使用Ehcache? Ehcache如何与多个实例一起使用?甚至可以使用Ehcache创建类似共享缓存的内容吗? 问题答案: 我是否需要其他服务器进行Ehcache? 您可以在独立模式下使用Ehcache。在这种拓扑中,缓存数据保存在应用程序

  • 本文向大家介绍详解Spring整合Ehcache管理缓存,包括了详解Spring整合Ehcache管理缓存的使用技巧和注意事项,需要的朋友参考一下 前言 Ehcache 是一个成熟的缓存框架,你可以直接使用它来管理你的缓存。 Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcache),但本身不直接提供缓存功能的实现。它支持注解方式使用缓存,非常方便。  本文先通过Ehc

  • 我发现了很多关于禁用Thymeleaf for development模板缓存的帖子,但我无法让它正常工作。我的堆栈: Spring靴1.5。7 Spring靴开发工具 百里香 IntelliJ IDEA Ultimate 2017.2 我不需要自动重建:我已经将IntelliJ中的“重建”命令映射到“恢复”命令,这对于热交换Java类非常有效。然而,css和html模板仍然只显示更改,如果我重新