Spring缓存不起作用

时间:2013-08-21 03:47:02

标签: spring caching ehcache

我正在尝试使用带有Ehcache的Spring Cache。问题是当我的应用程序启动时它没有显示任何异常,但它使我的应用程序关闭。

以下是代码段。

  @Cacheable(value="offerInformation",key="#offerInformation.accountType.value.concat('-').concat(#offerInformation.externalId).concat('-').concat(#offerInformation.accountTypeId)")
    public OfferInformation findOfferInformation(OfferInformation offerInformation){
        // We make sure the item will be returned from cache

        return null;
}

以下是我正在评估我的应用时生成的日志

    2013-08-21 09:05:39,507 DEBUG [main]  Adding cacheable method 'findOfferInformation' with attribute: [CacheableOperation[public com.ericsson.enk.ene.model.OfferInformation com.ericsson.enk.ene.cache.AddOfferInfoToCache.findOfferInformation(com.ericsson.enk.ene.model.OfferInformation)] caches=[offerInformation] | condition='' | key='#offerInformation.accountType.value.concat('-').concat(#offerInformation.externalId).concat('-').concat(#offerInformation.accountTypeId)']
2013-08-21 09:05:39,507 DEBUG [main]  Creating implicit proxy for bean 'addOfferInfoToCache' with 0 common interceptors and 1 specific interceptors
2013-08-21 09:05:39,508 INFO  [main]  Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@6a969c29: defining beans 

我使用的是Spring 3.1.1版本。请帮帮我。

1 个答案:

答案 0 :(得分:0)

http://forum.springsource.org/showthread.php?129579-How-to-construct-a-key-for-cache-in-Cacheable-annotation

从上面的帖子中的上一条评论来看,您似乎需要更改密钥:

  

Spring无法从它生成的代理调用返回对象的方法。它试图在缓存的方法中访问返回的对象,而不是访问类

中的方法

尝试按以下方式更改密钥:

@Cacheable(value = "offerInformation",
           key = "#offerInformation.accountType+'-'+#offerInformation.externalId+'-'+#offerInformation.accountTypeId")
public OfferInformation findOfferInformation(OfferInformation offerInformation) {
        // make sure the item will be returned from cache
        return null;
}