【问题标题】:Spring boot and javax cachingSpring Boot 和 javax 缓存
【发布时间】:2017-09-04 03:20:31
【问题描述】:

我有一个 Spring Boot 应用程序,我正在尝试配置 javax 缓存。如果我包含启用缓存注释,则 spring 找不到下面 bean 中定义的 javax cacheManager。如果我注释掉缓存注释,则找到了 bean,但我收到一个错误,即没有配置缓存提供程序。任何见解将不胜感激。

@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;
   }
}

【问题讨论】:

    标签: caching spring-boot


    【解决方案1】:
    javax.cache.CacheException: No CachingProviders have been configured
    

    这个异常意味着类路径上没有CachingProviders 实现(.jar)。

    考虑在 pom.xml 文件中添加一个CachingProvider 实现,例如 Ehcache:

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

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

    从 应用程序的类路径。当且仅当存在时,此方法才有效 类路径中只有一个 JCache 实现 jar。如果有 您的类路径中的多个提供程序然后使用完全限定名称 org.ehcache.jsr107.EhcacheCachingProvider 检索 Ehcache 缓存提供者。您可以使用 Caching.getCachingProvider(String) 静态方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 2017-03-07
      • 2020-03-16
      • 2018-12-16
      • 1970-01-01
      • 2017-12-10
      • 2018-02-07
      相关资源
      最近更新 更多