我无法使用ehcache存储数据

时间:2018-01-16 19:06:03

标签: spring caching ehcache

我是缓存世界的新手,我正在尝试实现缓存。我想缓存为某些数据调用Web服务的方法的输出,以避免一次又一次地为相同的数据调用Web服务。但我的缓存不起作用,我的方法是反复调用Web服务获取相同的数据。

弹簧的server.xml

   <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 named = "shared" value="true"/>
</bean>

ehcache.xml中

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="ehcache.xsd"
   updateCheck="true"
   monitoring="autodetect"
   dynamicConfig="true">

<diskStore path="java.io.tmpdir"/>

<cache name="loadstatus"
maxEntriesLocalHeap = "10000"
maxEntriesLocalDisk= "100000"
eternal = "false"
diskSpoolBufferSizeMB = "20"
timeToIdleSeconds="28800" timeToLiveSeconds="28800"
memoryStoreEvictionpolicy ="LFU"`enter code here`
transactionalMode ="off">
<persistance strategy = "localTempSwap"/>
</cache>       
</ehcache>

服务类

@Service
public class ServiceImplementation {

@Autowired
ClientImplementation webServiceClient;

@Cacheable(value = "loadstatus")    
public List<GetLoadStatusResonseElement> getLoadStatus() throws Exception{
List<GetLoadStatusResonseElement> list = null;
list = webServiceClient.getLoadStatus();
return list;
}
}

PS:从Web服务进入我的方法loadstatus的数据需要每24小时刷新一次。但是在同一天数据将保持不变,因此在某一天我想缓存Web服务的输出。

1 个答案:

答案 0 :(得分:0)

仅指定@Cacheable是不够的。你还需要告诉Spring应该寻找那些注释。

添加<cache:annotation-driven/>应该修复它(当然,你需要添加对应的xsd)