2016-01-05 15 views
0

Я пытаюсь иметь две реализации кеша для объектов другого типа в моем приложении загрузки весной. Я хочу сохранить определенные объекты в redis cache, тогда как другой объект в кеше guava основан на методе. Всякий раз, когда я реализую два calsses, которые расширяют CachingConfigurerSupport, я получаю сообщение об ошибке, допускающей только один экземпляр этого класса. Может ли кто-нибудь предложить, как я могу это сделать?можно использовать несколько типов кеша (redis & guava) при загрузке весны одновременно?

+0

Это уже ответили [здесь] (http://stackoverflow.com/questions/34564285/how-to-setup-two-different-cachemanager-in-spring-boot/34587497) –

+0

Так что мне нужно аннотировать одно внедрения CacheConfigurer, а не другого? Не могли бы вы объяснить это на примере? –

+0

Просто реализуйте 'CachingConfigurer' для стандартного и зарегистрируйте дополнительный компонент типа' CacheManager' в вашей конфигурации. –

ответ

0

вы можете использовать CompositeCacheManager как это,

CompositeCacheManager compositeCacheManager = new CompositeCacheManager(
       ehCacheCacheManager(), 
       redisCacheManager()); 

при использовании кэша может указано cacheManage.

@Cacheable(value = "firstCache", key = "#word", cacheManager = "ehCacheCacheManager") 

Или

@Caching(
      cacheable = { 
        @Cacheable(value = "firstCache", key = "#word", cacheManager = "ehCacheCacheManager"), 
        @Cacheable(value = "extendInfo", key = "#word", cacheManager = "redisCacheManager") 
      } 
    ) 

, но я не знаю, как обновить кэш каскада. надеюсь, что это поможет.