Как настроить Jcache с Ecache в качестве провайдера в Spring application-context.xml?

Документация Spring содержит следующую информацию.

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

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

Я хочу точно знать, как настроить этот компонент jcacheManager (с EhCache в качестве поставщика) в контексте приложения spring xml.

Я уже настроил зависимость, как показано ниже, в 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> 

person Raj    schedule 25.06.2015    source источник


Ответы (2)


Это действительно зависит от того, как вы хотите его настроить. Если вы используете Spring Boot 1.3, он будет создан автоматически. Возможно, вы могли бы взглянуть на источник JCacheCacheConfiguration?

Вы можете получить значение по умолчанию javax.cache.CacheManager через Caching.getCachingProvider().getCacheManager()

person Stephane Nicoll    schedule 06.07.2015

Нам сейчас неудобно интегрировать Ehache3.x с Spring4.x. Spring boot делает это и переписывает некоторые коды:

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

в весенней загрузке это:

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

и ему нужен экземпляр javax.cache.CacheManager,

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

У Ehcache нет подробного представления для нас.

Spring boot нравится:

@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.

person Rocky Hu    schedule 02.12.2016