gpt4 book ai didi

java - Spring MVC - 配置Ehcache - 不缓存

转载 作者:行者123 更新时间:2023-12-02 12:37:26 30 4
gpt4 key购买 nike

我正在尝试将 Ehcache 与我的 Java Spring MVC Web 应用程序集成。我已按照以下文章中的说明进行操作: https://dzone.com/articles/implementing-ehcache-using 。我已将以下依赖项添加到我的 pom.xml 文件中:

<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.9.0</version>
</dependency>

我的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="swcmRestData"
maxEntriesLocalHeap="10000"
maxEntriesLocalDisk="1000"
eternal="false"
diskSpoolBufferSizeMB="20"
timeToIdleSeconds="300" timeToLiveSeconds="600"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off">
<persistence strategy="localTempSwap" />
</cache>

</ehcache>

我的 root-context.xml 中有以下条目:

<!-- EhCache Configuration  -->
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:configLocation="classpath:ehcache.xml" p:shared="true"/>
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cacheManager-ref="ehcache"/>

我有一个想要启用 ehCache 的方法:

@Cacheable(value="swcmRestData", key="url")
public <T> T getEntity(String url, java.lang.Class<T> gt) throws RestException
{
T t = restClientService.getEntity(url, gt);
return t;
}

如果将相同的 url 传递给指定的方法,我希望从 ehCache 检索数据。运行代码时我没有收到任何错误。但看起来缓存不起作用。我这里有什么遗漏的吗

最佳答案

有两件事可能是导致问题的原因:

  1. 您缺少 Spring 配置,因此定义的 bean 和缓存注释之间存在链接。实际上,这是您链接的文章中的第 2 点,但您在此处没有提及。
  2. 正如评论中所建议的,您正在缓存的方法是从同一个类中调用的。这是使用代理时 Spring AOP 实现的限制。如果您配置 Spring 进行字节码编织,它将起作用。

如果以上都不是错误根源,请提供有关您的设置的更多信息。

关于java - Spring MVC - 配置Ehcache - 不缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45081719/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com