带ehcache的Spring不缓存对象

时间:2015-05-16 21:14:48

标签: spring ehcache

我正在使用带有ehcache的spring 4.1。我能够使用整数键缓存字符串值,但每当我尝试缓存一个对象时,它都会失败而没有任何错误。我在缓存中保存的模型(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" />

弹簧配置如下

<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 个答案:

答案 0 :(得分:2)

我解决了! 我需要为需要缓存的对象类实现serializable。

<body>

...