我正在使用带有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,则它可以正常工作。 有什么想法吗?
答案 0 :(得分:2)
我解决了! 我需要为需要缓存的对象类实现serializable。
<body>
...