2017-07-01 9 views
0

私はスプリングブートアプリケーションを持っており、javaxキャッシュを設定しようとしています。私がイネーブルキャッシングアノテーションをインクルードすると、springは以下のBeanで定義されたjavax cacheManagerを見つけることができません。キャッシングアノテーションをコメントアウトすると、Beanが見つかりますが、キャッシングプロバイダが設定されていないというエラーが発生します。どんな洞察にも感謝します。スプリングブートとjavaxキャッシング

@Configuration 
@EnableCaching 
public class CacheConfig { 

@Bean(name = "cacheManager") 
public CacheManager cacheManager() { 
     CachingProvider cachingProvider = Caching.getCachingProvider(); 
     CacheManager cacheManager = cachingProvider.getCacheManager(); 
     Arrays.stream(LookupCache.values()).forEach(e -> cacheManager.createCache(e.getName(), e.cacheConfig(List.class))); 
     return cacheManager; 
    } 
} 

答えて

0
javax.cache.CacheException: No CachingProviders have been configured 

この例外は、(.jarファイル)クラスパスにはCachingProviders実装が存在しないことを意味します。

<dependency> 
     <groupId>org.ehcache</groupId> 
     <artifactId>ehcache</artifactId> 
    </dependency> 

Caching.getCachingProvider()from Ehcache 3.x JSR-107 Provider doc.

アプリケーションのクラスパスからデフォルトのCachingProviderの実装を取得します:

は、例えばEhcacheのは、ファイルをのpom.xmlするCachingProvider実装を追加を検討してください。このメソッドは、クラスパスに JCache実装JARが1つのみ存在する場合にのみ機能します。クラスパスに 複数のプロバイダがある場合は、完全修飾名 org.ehcache.jsr107.EhcacheCachingProviderを使用して、Ehcache キャッシングプロバイダを取得します。これを行うには、代わりに Caching.getCachingProvider(String)静的メソッドを使用します。

関連する問題