Eh缓存在Spring启动时的到期时间

时间:2017-07-28 09:10:35

标签: java ehcache

我已经创建了一个spring boot应用程序并在maven项目中实现了EhCache。我的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="labCabSourceInfoCache" 
    maxEntriesLocalHeap="10000"
    maxEntriesLocalDisk="1000" 
    eternal="false" 
    diskSpoolBufferSizeMB="20"
    timeToIdleSeconds="300" timeToLiveSeconds="300"
    memoryStoreEvictionPolicy="LFU" 
    transactionalMode="off">
    <persistence strategy="localTempSwap" />
</cache>

我在参数timeToIdleSeconds&amp;中设置了到期时间为300。 timeToLiveSeconds

但它对我不起作用。我没有使用任何配置bean进行缓存实现。我使用@Cacheable注释作为用于缓存的方法。

@Cacheable(value="labCabSourceInfoCache", key="#labAlias.concat(#Account)") 
public String findLabCabSourceInfo(String labAlias, String Account) { 
    try { 
        //codes return "some string" 
    } catch (Exception e) { } return null; 
}

为什么没有被驱逐或清除?

1 个答案:

答案 0 :(得分:0)

您可能需要启用缓存注释的处理。 你能尝试在主类上添加@EnableCaching吗?

从教程中 https://spring.io/guides/gs/caching/

  

@EnableCaching注释会触发检查的后处理器   每个Spring bean都在公共场合存在缓存注释   方法。如果找到这样的注释,则自动执行代理   创建以拦截方法调用并处理缓存行为   相应

此外,您还可以添加以下代码,然后分析彻底的Jconsole,即应用程序中创建的缓存的详细信息。

@Bean(initMethod="init")
@Autowired
public ManagementService managementService(CacheManager cacheManager,
              MBeanServer mBeanServer) {
       return new ManagementService(cacheManager, mBeanServer, true, true,true, true);
}