当前位置: 首页 > 知识库问答 >
问题:

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

刁俊人
2023-03-14

我已经创建了一个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>

我已在参数timeToIdle秒中设置到期时间为300

但这对我不起作用。我没有使用任何配置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个答案

方嘉志
2023-03-14

您可能需要启用缓存注释的处理。你能试着在你的主类上添加@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);
}
 类似资料:
  • 我正在使用Spring方法级别的注释@cacheable来缓存我从数据库中获取的数据。我可以在服务器启动时使用上述注释执行缓存吗?我尝试了这个,但它再次从数据库而不是从缓存中获取。

  • 我们目前正在使用下面的。它很旧,但现在无法升级到更高版本 我们已经将代码从直接JDG实现(如下所示)修改为基于XML的配置文件中的SpringRemteCacheManager,并使用Spring cache:建议来定义可缓存、cahce-put、cache-evict方法。 请参阅当前代码,其中我们可以控制添加到期时间。我们也想用Spring-Infinispan做类似的事情。使用Spring-

  • 在应用程序(Spring引导服务)启动时,需要清除Redis缓存。 Redis运行在另一个docker容器中,该容器具有自己的卷映射。因为它保留了旧的缓存,所以即使在应用程序重新启动后,应用程序也会从Redis缓存而不是数据库中拾取数据 > 尝试了的,但它从未被调用。 在Application ationMain类中尝试了,但是它没有清除缓存。 尝试使用,但仍然没有运气 @组件公共类应用程序启动{

  • 我正在尝试使用Spring@cacheable和@transactional来设置一个事务性的ehcache。 我的缓存与@cacheable一起工作很好,但一旦我将缓存设置为使用本地事务: 但这将很难,因为我想要将ehcache事务与DB事务同步,而DB事务是由@Transactional控制的。 有没有办法让本地Ehcache事务与Spring@Transactional一起工作?

  • 我运行一个Spring启动1.5.2应用程序。我想将缓存添加到我的服务方法中,我已经添加了Spring引导启动缓存maven依赖,我正在使用@Cacheable注释,但它没有生效,我在@配置类中创建了我的服务bean-这里有一个例子 下面是我的服务方法的一个例子 我的repoistory接口方法如下 每当我从RestController调用此服务方法时,缓存从未被触发,看起来它没有正确设置 我能做

  • 我想在spring boot中设置禁用浏览器缓存(缓存控制:无缓存,无存储,最大年龄=0)。 我的环境 我搜索如果我想设置响应头的缓存控制:无缓存,只需添加在'application.yml'。 这样地 或 但这并不奏效 我无法在chrome浏览器的响应标头中显示缓存控件标头 在Spring框架中,我只是设置 如何设置禁用浏览器缓存在Spring启动没有Spring安全? 非常感谢。