ssm simple-spring-memcached — запись в кеш не работает

Я использую API SSMCache#put напрямую, чтобы получить кеш и обновить ключ.

Сначала я прочитал значение из кеша, используя аннотированный ниже метод spring-cache.

@Cacheable(value="CACHE_JOURNALS", key="#ID") 
    public JournalBean getJournalByID(int ID){...}
...
[INFO] (CXServiceImpl.java:sendTo:78) read: [1, xxx, yyy, 5348 ]

затем обновите поле bean.count и напишите ответ.

cache.put(key, bean);
...
[INFO] (SSMCache.java:put:152) Put '[1, xxx, yyy, 5349 ]' under key 1 to cache CACHE_JOURNALS

Позже служба Spring пытается прочитать кеш (CACHE_JOURNALS), но значение bean.count не обновляется в кеше и является старым значением (5348).

Надеюсь, я вызываю правильный API для обновления элемента кеша. Любые указатели?


person JayabalanAaron    schedule 06.08.2014    source источник


Ответы (1)


Не могли бы вы показать, как вы настроили CACHE_JOURNALS?

Вы включили регистрацию в SSM, чтобы видеть команду put при вызове cache.put. Можешь сделать то же самое для @Cacheable? Посмотрим, под каким ключом этот объект хранится в кеше.

Если вы хотите обновить элемент в кеше, вам не нужно использовать классы SSM. Вы можете использовать аннотацию Spring @CachePut.

person ragnor    schedule 07.08.2014
comment
Аннотированный метод @Cacheble getJournalByID находился в том же компоненте и вызывался для чтения элемента из кеша. Spring не перехватывает вызовы методов в одном компоненте. Обсуждались и решались здесь. - person JayabalanAaron; 07.08.2014