我是缓存世界的新手,我正在尝试实现缓存。我想缓存为某些数据调用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服务的输出。
答案 0 :(得分:0)
仅指定@Cacheable
是不够的。你还需要告诉Spring应该寻找那些注释。
添加<cache:annotation-driven/>
应该修复它(当然,你需要添加对应的xsd)