Настройка EHCache для Spring3.1.1 и Hibernate - PullRequest
11 голосов
/ 09 марта 2012

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

<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

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

Ответы [ 4 ]

13 голосов
/ 09 марта 2012

Вам нужно по-другому ссылаться на свойство 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"/>
11 голосов
/ 02 мая 2012

@ Ответ aweigold идеален, но более ясное решение может быть достигнуто, если вы передадите ссылку на компонент "ehcache", используя "p: cacheManager-ref".

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
    p:cacheManager-ref="ehcache" />
2 голосов
/ 05 сентября 2013

Включите следующую зависимость

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-core</artifactId>
    <version>2.3.1</version>
</dependency>
0 голосов
/ 01 января 2013

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

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cacheManager-ref="ehcache" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...