2012-03-09 91 views
11

我試圖在Hibernate 3.5.5的現有Spring 3.1.1應用程序中啓用對象緩存。我正在使用ehcache 2.2.0。在我的applicationContext中,我添加了配置來打開EHCache緩存。爲Spring3.1.1和Hibernate配置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" /> 

我添加了必要的依賴在了Ehcache pom.xml文件。但現在我收到此錯誤:

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

此致應該工作...這是我的工作配置,如果它幫助: <緩存:註釋驅動/> <屬性名= 「的CacheManager」> <豆ID = 「ehcache的」 類= 「org.springframework.cache.ehcache.EhCacheManagerFactoryBean」 號碼:configLocation =「類路徑:ehcache的.xml「/> – aweigold 2012-03-09 17:36:10

+0

@aweigold謝謝。這似乎是有原因的。我錯過了屬性元素。你爲什麼不加入你的評論作爲答案,以便我可以接受它。 – 2012-03-09 17:44:58

+0

很酷,很高興幫助。 – aweigold 2012-03-09 19:14:47

回答

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

謝謝!這爲我工作,好奇,爲什麼在配置文件沒有...... – 2012-07-31 15:51:11

11

@aweigold的答案是完美的,但如果你通過使用‘的Ehcache’豆的參考,可以實現更清晰的解決方案‘P:CacheManager的-REF’。

<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 2013-03-01 08:16:53

2

包括下面的依賴

<dependency> 
    <groupId>net.sf.ehcache</groupId> 
    <artifactId>ehcache-core</artifactId> 
    <version>2.3.1</version> 
</dependency> 
相關問題