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 ответ

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;
}
Другие вопросы по тегам