Configuring EHCache for Spring3.1.1 and Hibernate

16,309

Solution 1

You need to reference your cacheManager property differently. This is how I have it working:

<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"/>

Solution 2

@aweigold 's answer is perfect but a clearer solution can be achieved if you pass the reference of "ehcache" bean using "p:cacheManager-ref".

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

Solution 3

Include the below dependency

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-core</artifactId>
    <version>2.3.1</version>
</dependency>

Solution 4

The same as in last post only without mistake in attribute name:

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cacheManager-ref="ehcache" />
Share:
16,309
Vincent Ramdhanie
Author by

Vincent Ramdhanie

Vincent is a Software Engineer with over 18 years of experience building software in a variety of environments. When not building software Vincent is a lecturer for the University of London's external programme. Since 2014 Vincent was a mentor for Thinkful.com helping students navigate their way to become web developers. He also contributes to the curriculum at Thinkful for React, Node and Data Science. 👨🏾‍💻 - Currently work at Teamflow 📬 - Email Me 🤔 - Mentor at Thinkful.com 👨🏾‍🏫 - I am a lecturer at SBCS Blog - Things I learn the hard way 🏡 - My home page

Updated on June 05, 2022

Comments

  • Vincent Ramdhanie
    Vincent Ramdhanie almost 2 years

    I am attempting to enable object caching in an existing Spring 3.1.1 application with Hibernate 3.5.5. I am using ehcache 2.2.0. In my applicationContext I have added the configuration to switch on caching with 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" />
    

    I then created the ehcache.xml file:

    <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" /> 
    

    I added the necessary dependencies in the pom.xml file for ehcache. But now I am getting this error:

    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

    Does anyone have any idea what is causing this?

  • emrahkocaman
    emrahkocaman about 11 years
    Thanks @Bogdan, I've fixed the typo.