Spring кеш не работает
Я пытаюсь использовать Spring Cache с Ehcache . Проблема в том, что при запуске моего приложения не появляется никаких исключений, но оно закрывается.
Ниже приведен фрагмент кода.
@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 ответ
Из последнего комментария в посте выше, кажется, вам нужно изменить ключ:
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;
}