我正在尝试使用带有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版本。请帮帮我。
答案 0 :(得分:0)
从上面的帖子中的上一条评论来看,您似乎需要更改密钥:
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;
}