Spring @Cacheable 不工作-我的配置有什么问题?

标签 spring caching java-5

我已经看到很多同一个问题的化身,但我想我已经尝试了所有修复 - 我的用法非常简单。

我一直在使用 Ehcache,但也没有用。因此,为了排除 Ehcache 问题并帮助指出更基本的东西,我转向了 SimpleCacheManager 和 ConcurrentMapCacheFactoryBean。

这是我的配置:

<cache:annotation-driven/>

<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
      <property name="caches">
        <set>
          <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" p:name="parentAppIds"/>
        </set>
      </property>
    </bean>

这是我的方法:

    @Cacheable(value="parentAppIds", key="accountNumber")
        public Long findApplicationId(String accountNsc, String accountNumber) throws EMSException {
....
}

这是接口(interface)上的方法,实现类是Spring管理的@Service("foo")

我尝试按照建议使用“p0”here但无济于事。我没有编译问题,我的服务器日志中也没有错误,所以我确信我的类路径中有所有必要的东西;命名空间都很好,因为我为此使用了 STS - 所以我省略了 pom.xml 和 spring 命名空间声明以阻止噪音。

我正在使用 Spring 3.1; Java 1.5 和 Websphere 6.1

症状是使用相同的参数重复访问该方法。

请帮忙 - 我饿了,拒绝去吃午饭,直到我搞定这个。

注意:我已经简化了我的@Cacheable 声明,我的实际声明是

@Cacheable(value="parentAppIds", key="#p0.concat('-').concat(#p1)")

都不行。

谢谢。

** 编辑 - 我已经排除了 Websphere 的问题,方法是使用

创建一个测试平台
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(...)

模仿正在发生的事情。 @Cacheable 根本不起作用。必须有一些非常明显的东西我失踪了。 (我现在吃午饭了)

最佳答案

我的问题已经解决了。不幸的是,我无法准确指出我的问题出在哪里。当然,所需要的只是我在问题中提到的内容。

为了解决这个问题,我整理了一下我的 Spring 配置并清除了我的浏览器和应用程序服务器缓存和临时目录。我进行了完全全新安装,缓存现在可以正常工作了。

有可能我是用早期版本测试的,它没有在应用程序配置中包含这条重要的行:

<cache:annotation-driven/>

我一开始就忽略了这一点。也许我添加的那个直到现在才被接受。否则我很难过。感谢您的宝贵时间。

关于Spring @Cacheable 不工作-我的配置有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20494574/

相关文章:

spring - 数据库读锁定

spring - 集成 AEM/CQ5 和 Spring 框架?

java - Servlet 不应该有可变的实例字段误报 Spring Autowiring (squid :S2226)

python - 使用 Flask-Cache 缓存非 View 函数的结果

php - 即使不再引用文件,Assetic 文件不存在错误?

java - 使用一种方法,以失败早期的方式干净、安全地将原始 map 转换为通用 map

java - 哪里可以下载 JRockit for Java 1.5

java - Hibernate:哪一列???将数据类型 nvarchar 转换为数字时出错

c# - 为什么 MemoryCache 中的滑动过期行为如此奇怪?

java - SpringLayout 不适用于 Java 5 (mac) VERTICAL_CENTER