2012-03-09 7 views
11

Я пытаюсь включить кэширование объектов в существующем приложении Spring 3.1.1 с Hibernate 3.5.5. Я использую ehcache 2.2.0. В моем приложенииContext я добавил конфигурацию для включения кеширования с EHCache.Настройка EHCache для Spring3.1.1 и Hibernate

<cache:annotation-driven /> 
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" 
    p:cache-manager="ehcache" /> 
<bean id="ehcache" 
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" 
    p:config-location="ehcache.xml" /> 

Затем я создал файл ehcache.xml:

<diskStore path="java.io.tmpdir" /> 

<defaultCache 
    eternal="false" 
    maxElementsInMemory="1000" 
    overflowToDisk="false" 
    diskPersistent="false" 
    timeToIdleSeconds="0" 
    timeToLiveSeconds="0" 
    memoryStoreEvictionPolicy="LRU"/> 

<cache name="studentCache" 
    eternal="false" 
    maxElementsInMemory="10000" 
    overflowToDisk="false" 
    diskPersistent="false" 
    timeToIdleSeconds="0" 
    timeToLiveSeconds="0" 
    memoryStoreEvictionPolicy="LRU" /> 

Я добавил необходимые зависимости в файле pom.xml для Ehcache. Но теперь я получаю эту ошибку:

Initialization of bean failed; 
nested exception is org.springframework.beans.ConversionNotSupportedException: 
Failed to convert property value of type 'java.lang.String' to required type 
'net.sf.ehcache.CacheManager' for property 'cacheManager'; 
nested exception is java.lang.IllegalStateException: 
Cannot convert value of type [java.lang.String] to required type 
[net.sf.ehcache.CacheManager] for property 'cacheManager': 
no matching editors or conversion strategy found

Кто-нибудь знает, что вызывает это?

+1

Yours должен работать ... вот моя рабочая конфигурация если он help: <Свойство Имя = "cacheManager"><исх локалный = "EHCache" /> <боб ID = класс "EHCache" = "org.springframework.cache.ehcache.EhCacheManagerFactoryBean" р: configLocation = "путь к классам: EHCache .xml "/> – aweigold

+0

@aweigold Спасибо. По-видимому, это работает по какой-то причине. Мне не хватает элемента свойства. Почему бы вам не добавить свой комментарий в качестве ответа, чтобы я мог его принять. –

+0

Прохладный, рад, что помог. – aweigold

ответ

13

Вам нужно ссылаться на свой ресурс cacheManager по-разному. Вот как у меня он работает:

<cache:annotation-driven /> 
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> 
<property name="cacheManager"><ref local="ehcache"/></property> 
</bean> 
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:configLocation="classpath:ehcache.xml"/> 
+0

Спасибо! Это сработало для меня, любопытно, почему документальная конфигурация не ... –

11

ответ @aweigold «s является совершенным, но более четкое решение может быть достигнуто, если вы передаете ссылку на„Ehcache“боба с помощью„р: cacheManager-исх“.

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" 
    p:cacheManager-ref="ehcache" /> 
0

То же самое, как и в последнем посте только без ошибок в имени атрибута:

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cacheManager-ref="ehcache" /> 
+0

Спасибо @Bogdan, я исправил опечатку. – emrahkocaman

2

Включите ниже зависимость

<dependency> 
    <groupId>net.sf.ehcache</groupId> 
    <artifactId>ehcache-core</artifactId> 
    <version>2.3.1</version> 
</dependency> 
Смежные вопросы