springMVC+mybais整合ehcache

来源:互联网 发布:数据抓包工具 编辑:程序博客网 时间:2024/06/02 02:15

1、pom文件引用:

<!--ehcache 相关包 -->   <dependency>       <groupId>net.sf.ehcache</groupId>       <artifactId>ehcache</artifactId>       <version>2.7.5</version>   </dependency>   <dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-context-support</artifactId>    <version>3.2.8.RELEASE</version>   </dependency>

2、在resource目录配置applicationContext-ehcache.xml和ehcache.xml

applicationContext-ehcache.xml配置:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:c="http://www.springframework.org/schema/c" xmlns:cache="http://www.springframework.org/schema/cache" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd        http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd        http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">    <!-- 开启spring缓存 -->    <bean id="ehCacheManager"class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"><property name="configLocation" value="classpath:/ehcache.xml" /><property name="shared" value="true" /></bean><bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"><property name="cacheManager" ref="ehCacheManager" /></bean><cache:annotation-driven cache-manager="cacheManager" /></beans>

ehcache.xml代码:

<?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">        <diskStore path="${java.io.tmpdir}/${system.project_name}/cache" /> <cache name="userCache" maxElementsInMemory="500"  timeToIdleSeconds="36000" timeToLiveSeconds="86400"  eternal="false" overflowToDisk="false" /> <!--  name:Cache的唯一标识    maxElementsInMemory:内存中最大缓存对象数    maxElementsOnDisk:磁盘中最大缓存对象数,若是0表示无穷大    eternal:Element是否永久有效,一但设置了,timeout将不起作用    overflowToDisk:配置此属性,当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中    timeToIdleSeconds:设置Element在失效前的允许闲置时间。仅当element不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大    timeToLiveSeconds:设置Element在失效前允许存活时间。最大时间介于创建时间和失效时间之间。仅当element不是永久有效时使用,默认是0.,也就是element存活时间无穷大      diskPersistent:是否缓存虚拟机重启期数据      diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒    diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区    memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)  或是LFU(较少使用)  --></ehcache>

3、web.xml配置:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1" metadata-complete="true"><!-- 修改servlet版本为3.1 --><!-- 配置DispatcherServlet --><servlet><servlet-name>niming</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 配置springMVC需要加载的配置文件spring-dao.xml,spring-service.xml,spring-web.xmlMybatis - > spring -> springmvc --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/spring-*.xml; classpath:applicationContext-ehcache.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>niming</servlet-name><!-- 默认匹配所有的请求 --><url-pattern>/</url-pattern></servlet-mapping></web-app>

4、使用案例:

package com.niming.service.impl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.niming.dao.UserDao;import com.niming.entity.User;import com.niming.service.UserService;import net.sf.ehcache.CacheManager;import net.sf.ehcache.Ehcache;import net.sf.ehcache.Element;@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;private static final CacheManager cacheManager = CacheManager.create();public void insertUser(User user) {userDao.insertUser(user);}public User queryUserById(String openid){User user = null;String key = "user/"+openid;Ehcache cache =  cacheManager.getEhcache("userCache");Element element = cache.get(key);if(element!=null){user = (User)element.getObjectValue();}else{user = userDao.queryUserById(openid);cache.put(new Element(key, user));}return user;}}


0 0