2

Spring 文档提供了以下信息。

<bean id="cacheManager"
   class="org.springframework.cache.jcache.JCacheCacheManager"
   p:cache-manager-ref="jCacheManager"/>

<!-- JSR-107 cache manager setup  -->
<bean id="jCacheManager" .../>

我想确切地知道如何在 spring 应用程序上下文 xml 中配置这个 jcacheManager bean(以 EhCache 作为提供者)。

我已经在 pom.xml 中配置了依赖项,如下所示,这很好。

<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>jcache</artifactId>
    <version>1.0.1</version>
    <exclusions>
        <exclusion>
            <artifactId>slf4j-api</artifactId>
            <groupId>org.slf4j</groupId>
        </exclusion>
    </exclusions>
</dependency> 
4

2 回答 2

0

这真的取决于你想如何配置它。如果您使用的是 Spring Boot 1.3,它将自动为您创建。也许你可以看看 的来源JCacheCacheConfiguration

您可以通过以下方式检索默认值 javax.cache.CacheManagerCaching.getCachingProvider().getCacheManager()

于 2015-07-06T13:00:42.713 回答
0

我们现在不方便将 Ehache3.x 与 Spring4.x 集成。Spring boot 做到了,它重写了一些代码:

<bean id="cacheManager"
   class="org.springframework.cache.jcache.JCacheCacheManager"

在 Spring Boot 中,它是:

@Bean
    public JCacheCacheManager cacheManager(CacheManager jCacheCacheManager) {
        return new JCacheCacheManager(jCacheCacheManager);
    }

它需要一个 javax.cache.CacheManager 实例,

<!-- JSR-107 cache manager setup  -->
<bean id="jCacheManager" .../>

Ehcache 没有给我们深入介绍。

春季启动确实喜欢:

@Bean
    @ConditionalOnMissingBean
    public CacheManager jCacheCacheManager() throws IOException {
        CacheManager jCacheCacheManager = createCacheManager();
        List<String> cacheNames = this.cacheProperties.getCacheNames();
        if (!CollectionUtils.isEmpty(cacheNames)) {
            for (String cacheName : cacheNames) {
                jCacheCacheManager.createCache(cacheName, getDefaultCacheConfiguration());
            }
        }
        customize(jCacheCacheManager);
        return jCacheCacheManager;
    }

创建 javax.cache.CacheManager 是一个正常的操作,只是遵循 Ehcache 文档。

于 2016-12-02T03:37:27.707 回答