2017-11-22 22 views
0

@Cacheable(org.springframework.cache.annotation.Cacheable)で注釈を付けたメソッドを呼び出すと、別の(サードパーティの)プロジェクトで次のエラーが発生します。注釈を追加すると、問題が解決しない、私のプロジェクトでキャッシュを有効にする@Cacheable(org.springframework.cache.annotation.Cacheable)で注釈を付けたメソッドを呼び出す

@Cacheable("usersCache") 
@Transactional(readOnly = true) 
@Override 

次のように

java.lang.IllegalArgumentException: Cannot find cache named 'usersCache' for CacheableOperation[public com.epsilon.amp.infra.model.AuthUser com.epsilon.amp.infra.dao.ContextDao.loadContextUser(java.lang.String,java.lang.String)] caches=[usersCache] | key='' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='' | unless='' 

サードパーティのプロジェクトの方法に比べて注釈があります。おそらく何が間違っていた可能性がありますか?

答えて

1

は、私はそのようなコンフィギュレーションを作成するために、あなたにお勧め:

@Configuration 
public class CacheService extends CachingConfigurerSupport { 
    @Bean 
    public CacheManager cacheManager() { 
     ConcurrentMapCacheManager cacheManager = new ConcurrentMapCacheManager() { 
      @Override 
      protected Cache createConcurrentMapCache(final String name) { 
       return new ConcurrentMapCache(name, 
         CacheBuilder.newBuilder().expireAfterWrite(30, TimeUnit.MINUTES).maximumSize(100).build().asMap(), false); 
      } 
     }; 
     return cacheManager; 
    } 
    @Bean 
    @Primary 
    public CacheManager guavaCacheManager() { 
     return new GuavaCacheManager(); 
    } 
} 

は、その後、あなたはメソッドをキャッシュしたいあなたのクラスの先頭にこの注釈を追加する必要があります。

@Cacheable(cacheNames = "guavaCacheManager") 

し、アプリケーションのクラスの先頭にこの注釈:@EnableCaching

グァバ情報:https://github.com/google/guava

関連する問題