Ehcache算是当前比较流行的缓存框架,使用缓存可以极大的缓解服务器和数据库的压力,提高访问效率,提高服务器的并发能力。接下来我们看怎么把缓存使用起来。

SpringMVC集成Ehcache所需的jar包:

包括ehcache-core-2.4.3.jar、ehcache-web-2.0.4.jar、guava-15.0.jar、slf4j-api-1.7.12.jar、commons-logging.jar

jar包下载地址http://download.csdn.net/detail/qq_33556185/9550460

将jar包放到项目里之后,我们看怎么集成它

(一)配置ehcahce.xml

updateCheck="false" 不检查更新当前使用的Ehcache的版本

eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。

maxElementsInMemory:缓存中允许创建的最大对象数

overflowToDisk:内存不足时,是否启用磁盘缓存。

timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前,

两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,

如果该值是 0 就意味着元素可以停顿无穷长的时间。

timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,

这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。

memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。

1 FIFO,先进先出

2 LFU,最少被使用,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。

3 LRU,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。

[html] view
plain
 copy

  1. <?xml version="1.0"encoding="UTF-8"?>
  2. <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">
  4. <!—默认缓存--!>
  5. <defaultCache eternal="false"
  6. maxElementsInMemory="10000"
  7. overflowToDisk="false"
  8. timeToIdleSeconds="0"
  9. timeToLiveSeconds="0"
  10. memoryStoreEvictionPolicy="LFU"/>
  11. <!—自定义缓存--!>
  12. <cache name="myCache"
  13. eternal="false"
  14. maxElementsInMemory="10000"
  15. overflowToDisk="false"
  16. timeToIdleSeconds="0"
  17. timeToLiveSeconds="0"
  18. memoryStoreEvictionPolicy="LFU"/>
  19. </ehcache>

(二)配置spring-common文件

导入命名空间

xmlns:cache="http://www.springframework.org/schema/cache"

http://www.springframework.org/schema/cache

http://www.springframework.org/schema/cache/spring-cache-4.1.xsd

具体配置如下:

启用缓存注解功能

<cache:annotation-drivencache-manager="cacheManager"/>

缓存管理器工厂加载ehcache的配置

<bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">

<property name="configLocation"value="classpath:ehcache.xml"/>

</bean>

声明缓存管理器

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">

<property name="cacheManager"ref="cacheManagerFactory"/>

</bean>

到此环境已经搭建完成了。

接下来我们看怎么使用

(三)使用@Cacheable注解来缓存数据

当缓存中没有该对象的时候,当然要从数据库里面访问了,从数据库查出来之后,缓存管理器会将此对象放到缓存中,下一次访问的时候,只要该对象没有消亡,则会从缓存里去取,不会再去查数据库

value为我们自定义缓存的name,key的属性是缓存的key

[java] view
plain
 copy

  1. @Cacheable(value="myCache",key="#userName")
  2. @Override
  3. public List<Permission>findPermissionByName(String userName) {
  4. System.out.println("查数据库了===========");
  5. return permissionRepository.findPermissionByName(userName);

(四)使用@CachePut注解来更新缓存

当缓存中的对象被修改的时候,修改的方法使用该注解,缓存管理器会根据key找到被修改的对象,然后去修改缓存中的对象

[java] view
plain
 copy

  1. @CachePut(value="myCache",key="#userId")//更新myCache 缓存
  2. @Override
  3. public void savePermission(Permissionpermission) {
  4. permissionRepository.savePermission(permission);
  5. }

(五)使用@CacheEvict注解来清除缓存

当对象被删除的时候,我们需要去清除缓存里面存在的该对象,若不清除,数据库里已经删除,可是缓存里还在,查询的时候,该对象还是会查出来。

清除掉指定key的缓存

@CacheEvict(value="myCache",key="#userName")

清除掉全部缓存

@CacheEvict(value="myCache",allEntries=true)

Spring MVC学习总结(7)——Spring MVC整合Ehcache缓存框架的更多相关文章

  1. [原创]mybatis中整合ehcache缓存框架的使用

    mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...

  2. MyBatis高级篇之整合ehcache缓存框架

    MyBatis高级篇之整合ehcache缓存框架  2017-09-01  0 Comments  1,671 Views  0 Times 一.前言 MyBatis为我们提供了Cache接口,也提供 ...

  3. mybatis中整合ehcache缓存框架的使用

    mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...

  4. Spring Boot 学习1-创建Spring Boot应用

    如果使用Maven, 确保先安装好Maven再继续. 创建POM文件 在这里有两种方式: 继承Spring Boot parent的pom. 不继承. 继承Spring Boot pom 1 2 3 ...

  5. 项目一:第十四天 1.在realm中动态授权 2.Shiro整合ehcache 缓存realm中授权信息 3.动态展示菜单数据 4.Quartz定时任务调度框架—Spring整合javamail发送邮件 5.基于poi实现分区导出

    1 Shiro整合ehCache缓存授权信息 当需要进行权限校验时候:四种方式url拦截.注解.页面标签.代码级别,当需要验证权限会调用realm中的授权方法   Shiro框架内部整合好缓存管理器, ...

  6. Spring Boot 2.x基础教程:使用EhCache缓存集群

    上一篇我们介绍了在Spring Boot中整合EhCache的方法.既然用了ehcache,我们自然要说说它的一些高级功能,不然我们用默认的ConcurrentHashMap就好了.本篇不具体介绍Eh ...

  7. 业务逻辑:五、完成认证用户的动态授权功能 六、完成Shiro整合Ehcache缓存权限数据

    一. 完成认证用户的动态授权功能 提示:根据当前认证用户查询数据库,获取其对应的权限,为其授权 操作步骤: 在realm的授权方法中通过使用principals对象获取到当前登录用户 创建一个授权信息 ...

  8. mybatis0210 mybatis和ehcache缓存框架整合

    .1mybatis和ehcache缓存框架整合 一般不用mybatis来管理缓存而是用其他缓存框架在管理缓存,因为其他缓存框架管理缓存会更加高效,因为别人专业做缓存的而mybatis专业做sql语句的 ...

  9. C#开发微信门户及应用(48) - 在微信框架中整合CacheManager 缓存框架

    在我们的很多框架或者项目应用中,缓存在一定程度上可以提高程序的响应速度,以及减轻服务器的承载压力,因此在一些地方我们都考虑引入缓存模块,这篇随笔介绍使用开源缓存框架CacheManager来实现数据的 ...

随机推荐

  1. indy10中idtcpclient的使用问题[和大华电子称数据交换]

    在实际事务应用中,多次打开server进行大写.其中遇到一些问题,由于时间关系,没有好好整理,虽然问题解决了, 但原因和其他方法没有去进一步测试. 1.每个单元用本地TidTCPClient变量连接s ...

  2. eclipse svn -- - --- appears to be part of a subversion 1.7 or greater....解决方法

    安装与svn1.7相兼容的flex Eclipse中的SVN(subclipse) 今天差点被TortoiseSVN1.7和subclipse弄崩溃... 还好最后弄好了,在此把方法写出来,以免其他人 ...

  3. jquery---- 数组根据值进行删除

    var chooseAttr = []; //serviceId为值 chooseAttr.splice($.inArray(serviceId,chooseAttr),);

  4. C#中的Attribute定义及用法

    1.Attribute定义 公共语言运行时允许添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .N ...

  5. Android - 使用JD-GUI反编译Android代码

    使用JD-GUI反编译Android代码 本文地址: http://blog.csdn.net/caroline_wendy Android程序出现Bug时,须要依据Bug寻找问题出错的地方; 须要使 ...

  6. Ruby学习(三)——类与对象(1)

    今天看了<Ruby元编程>,感觉内容新颖翔实,是Ruby中难得的一见的好书,在此推荐给大家.其实今天看的主要是第一章的第一部分,先把内容梳理一下,也许这一部分会分成几天的内容来给大家介绍吧 ...

  7. oracle如何创建数据库

    第一步: 从Windows桌面执行“开始”→“Database Configuration Assistant”命令,打开Database Configuration Assistant对话框的欢迎界 ...

  8. Swift3.0 闭包整理

    语法表达式 一般形式:{             (parameters) -> returnType in              statements            } 这里的参数 ...

  9. 蓝桥杯-- 历届试题 核桃的数量 (gcd)

      历届试题 核桃的数量   时间限制:1.0s   内存限制:256.0MB        问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋 ...

  10. Repeater 中 OnItemCommand 用法

    <table> <asp:Repeater ID="rptList" runat="server"OnItemCommand="rp ...