Integrating ehcache with spring 3.0

2019-07-20 21:32发布

I have an application in which I use spring 3.0.2 and ibatis. Now, I need to integrate ehcache with my code. I tried this link but couldnt get it working. I would prefer someone to give me the details of the jars required, xml configurations to be done and code changes if required.

3条回答
三岁会撩人
2楼-- · 2019-07-20 21:51

To implement this in your application, follow these steps:

Step 1:

Add the jars to your application as listed on the Ehcache Annotations for Spring project site.

Step 2:

Add the Annotation to methods you would like to cache. Lets assume you are using the Dog getDog(String name) method from above:

@Cacheable(name="getDog")
Dog getDog(String name)
{
    ....
}

Step 3:

Configure Spring. You must add the following to your Spring configuration file in the beans declaration section:

<ehcache:annotation-driven cache-manager="ehCacheManager" />

Please refer to Ehcache site for complete details.

查看更多
Lonely孤独者°
3楼-- · 2019-07-20 21:56

To integrate Ehcache just follow below steps

1 - Add Dependency in pom XML file

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

2 - create an xml file called spring-cache.xml put it in the resources folder

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:cache="http://www.springframework.org/schema/cache"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/cache 
        http://www.springframework.org/schema/cache/spring-cache.xsd">

    <cache:annotation-driven/>

    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
        <property name="cacheManager" ref="ehcache" />
    </bean>

    <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation" value="classpath:ehcache.xml" />
    </bean>

</beans>

3 - as you can see we are using reference of ehcache.xml so create file and put it in resources folder

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="true"
    monitoring="autodetect" dynamicConfig="true">
    <cache name="users" maxEntriesLocalHeap="5000"
        maxEntriesLocalDisk="1000" eternal="false" diskSpoolBufferSizeMB="20"
        timeToIdleSeconds="200" timeToLiveSeconds="500"
        memoryStoreEvictionPolicy="LFU" transactionalMode="off">
        <persistence strategy="localTempSwap" />
    </cache>
</ehcache>

so can see create a cache for "users" so that can use wherever user list is queried from the database

4 - use it like below code

@Cacheable(value="users")
public List<User> userList() {
    return userDao.findAll();
}

so that's it the same way you can implement cache wherever is required

still have some doubt or confusion see live demo

Integrate EhCache in Spring MVC

查看更多
走好不送
4楼-- · 2019-07-20 22:07

Upgrade to the latest spring 3.1 milestone - it has built-in cache support through annotations - see here

Apart from that, you can always use the EhCacheFactoryBean

查看更多
登录 后发表回答