2012-03-09 20 views
11

Próbuję włączyć buforowanie obiektów w istniejącej aplikacji Spring 3.1.1 z Hibernate 3.5.5. Używam ehcache 2.2.0. W moim applicationContext dodałem konfigurację, aby włączyć buforowanie za pomocą EHCache.Konfigurowanie EHCache dla Spring 3.1.1 i 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" /> 

Następnie utworzony plik 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" /> 

Po dodaniu niezbędnych zależności w pliku pom.xml do ehcache. Ale teraz otrzymuję ten błąd:

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

Czy ktoś ma pojęcia, co jest przyczyną tego?

+1

wyrazami powinny pracować ... oto moja konfiguracja roboczy, jeśli to pomaga: ​​ aweigold

+0

@aweigold Dzięki. To wydaje się działać z jakiegoś powodu. Brakowało mi elementu właściwości. Dlaczego nie dodasz swojego komentarza jako odpowiedzi, aby ją zaakceptować. –

+0

Fajnie, cieszę się, że pomogło. – aweigold

Odpowiedz

13

Musisz inaczej odwoływać się do właściwości cacheManager. To jak mam to działa:

<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

Dzięki! To działało dla mnie, ciekaw, dlaczego udokumentowana konfiguracja nie ... –

11

odpowiedź @aweigold „s jest idealny, ale jaśniejszy rozwiązanie można osiągnąć, jeśli przechodzą odniesienie«ehcache»fasoli z wykorzystaniem«t: cacheManager-ref».

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

Tak samo jak w poprzednim poście tylko bez pomyłkę w nazwie atrybutu:

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

Dzięki @Bogdan, poprawiłem literówkę. – emrahkocaman

2

Dołącz poniższą zależność

<dependency> 
    <groupId>net.sf.ehcache</groupId> 
    <artifactId>ehcache-core</artifactId> 
    <version>2.3.1</version> 
</dependency> 
Powiązane problemy