Java缓存框架使用EhCache结合Spring AOP

一.Ehcache简介 
    EhCache是一个纯Java的进程内缓存框架,具有如下特点:
    1. 快速简单,非常容易和应用集成。
    2.支持多种缓存策略 。
    3. 缓存数据有两级:内存和磁盘,因此无需担心容量问题 。
    4. 缓存数据会在虚拟机重启的过程中写入磁盘 。
    5. 可以通过RMI、可插入API等方式进行分布式缓存。
    6. 具有缓存和缓存管理器的侦听接口 。
    7. 支持多缓存管理器实例,以及一个实例的多个缓存区域 等特点。

二.Ehcache配置的相关参数 
    Ehcache 的配置很灵活,官方提供的配置方式有好几种,你可以通过声明配置、在xml中配置、在程序里配置或者调用构造方法时传入不同的参数。下面以最常用的XML 配置为例说下配置的相关参数的意义,ehcache.xml是最常见的一个文件,ehcache一般会通过CacheManager从classpath 加载该文件完成Cache的实例化。
    
    1.ehcache.xml中的配置信息
        ehcache.xml片段:

      <ehcache><diskStore path="java.io.tmpdir"/><defaultCachename="name"maxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"overflowToDisk="true"maxElementsOnDisk="10000000"diskPersistent="false"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"/></ehcache>

2.Cache中常用参数的具体意义
        (1)name:Cache的唯一标识。
        (2)maxElementsInMemory:内存中最大缓存对象数。
        (3)eternal:Element是否永久有效,一旦设置true,timeout将不起作用。
        (4)timeToIdleSeconds:设置Element在失效前的允许闲置时间。仅当element不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
        (5)timeToLiveSeconds:设置Element在失效前允许存活时间。最大时间介于创建时间和失效时间之间。仅当element不是永久有效时使用,默认是0.,也就是element存活时间无穷大。
        (6)overflowToDisk:配置此属性,当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中。
        (7)maxElementsOnDisk:磁盘中最大缓存对象数,若是0表示无穷大。
        (8) memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略 去清理缓存中的内容。默认策略是LRU(最近最少使用),你也可以设置为FIFO(先进先出)或是LFU(较少使用) 
    
三.Spring和Ehcache的集成 
    1.ehcache.xml

2.beans.xml的配置

 <bean id="cacheManager"class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"><property name="configLocation"><value>classpath:ehcache.xml</value></property></bean><bean id="levelOneCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean"><property name="cacheManager"><ref local="cacheManager" /></property><property name="cacheName"><value>configCache</value></property></bean>

3.测试类

输出如下:

        cacheObject[name:test],无法从缓存中取到cacheObject[name:test],从缓存中取到cacheObject[name:test],从缓存中取到cacheObject[name:test],从缓存中取到cacheObject[name:test],从缓存中取到

四.利用Spring AOP和Ehcache实现线程级方法缓存 
    在复杂的业务逻辑或在一次计算中需多次调用同一个DAO或远程服务,在这种情况下,均可对计算结果缓存起来,不但可以减少了不必要的调用次数,还同时可以提高系统运算性能。下面以缓存一个service为例说明一下其用法。
    
    1.TestService接口

2.TestServiceImpl实现类

3.拦截器的实现

4.Bean的配置

5.测试方法

其输出结果如下:

 第一次调用方法并缓存其值:mango
从缓存中取得的值为:mango
从缓存中取得的值为:mango
从缓存中取得的值为:mango
从缓存中取得的值为:mango

转载于:https://www.cnblogs.com/mengyuxin/p/6396269.html

Java缓存框架使用EhCache结合Spring AOP相关推荐

  1. 【EhCache】Java缓存框架使用EhCache结合Spring AOP

    为什么80%的码农都做不了架构师?>>>    一.Ehcache简介     EhCache是一个纯Java的进程内缓存框架,具有如下特点:     1. 快速简单,非常容易和应用 ...

  2. Spring - Java/J2EE Application Framework 应用框架 第 5 章 Spring AOP: Spring之面向方面编程G

    第 5 章 Spring AOP: Spring之面向方面编程 5.1. 概念 面向方面编程 (AOP) 提供从另一个角度来考虑程序结构以完善面向对象编程(OOP). 面向对象将应用程序分解成 各个层 ...

  3. Spring - Java/J2EE Application Framework 应用框架 第 5 章 Spring AOP: Spring之面向方面编程

    第 5 章 Spring AOP: Spring之面向方面编程 5.1. 概念 面向方面编程 (AOP) 提供从另一个角度来考虑程序结构以完善面向对象编程(OOP). 面向对象将应用程序分解成 各个层 ...

  4. 【EhCache: 一款Java的进程内缓存框架】EhCache 是什么、代码实战、版本3的改进

    文章目录 1 EhCache 是什么 2 EhCache 版本2 代码实战 Demo pom.xml TestEH.java ehcache.xml 3 EhCache 版本3 代码实战 Demo p ...

  5. Java程序员必会的Spring AOP在实际项目中的应用

    很久没有用过Java的AOP,最近接触到了一个需求,恰好可以用AOP的思想来实现,就此总结一下. 目录 AOP简介 ① pointcut(切入点) ② advice(通知) ③ aspect(切面) ...

  6. 三大缓存框架(Ehcache+Memcache+Redis)基础

    1.Ehcache(纯Java的进程内缓存框架,也叫二级缓存) Ehcache是一个开源的.设计于提高在数据从RDBMS中取出来的高花费.高延迟采取的一种缓存方案(在Java项目广泛的 使用).正因为 ...

  7. JAVA常用框架系列教程之Spring(附视频)

    大家好,框架作为程序员开发重要的学习部分,在java开发中,框架的学习也尤为的重要,框架不仅可以帮助大家高效的进行开发工作,更加能够优化工作步骤,从而提高开发人员的工作效率.为帮助Java编程的初学者 ...

  8. s2sh框架搭建(基于spring aop)

    对于spring aop 是如何管理事务的,请看一下:http://bbs.csdn.net/topics/290021423 1.applicationContext.xml <?xml ve ...

  9. SSM框架笔记10:Spring AOP基础

    Spring AOP基础   AOP:Aspect-Oriented Programming 面向切面编程.   Spring的AOP作用在于解耦.AOP让一组类共享相同的行为(比如事务管理.日志管理 ...

最新文章

  1. linux webservice服务器端,Linux查看资源使用情况 webservice服务端口监控
  2. 最简单的视音频播放演示样例5:OpenGL播放RGB/YUV
  3. 转载:python引用DLL文件的方法
  4. java加载sql2016_SQl Server 2016 with R.
  5. z-index在IE中的迷惑
  6. VPC 2007 Console界面消失以及解决方法
  7. 联想Z6预告海报公布:最轻4000mAh手机,没有之一
  8. mysql 5.1.71_MySQL升级从5.1.71到5.7.17
  9. android核心系列--1,组件生命周期
  10. 近世代数概论------有理数与域
  11. Excel 2010 VBA 入门 121 ActiveX控件
  12. DELPHI XE10 fmx表格控件Grid单元格根据内容值来设置颜色
  13. 剑三 服务器状态查询,数据互通全面启动_剑侠情缘网络版叁_金山游戏官方网站_金山逍遥Xoyo.com...
  14. 计算机辅助设计基础试题,CAD基础试题「附答案」
  15. Java项目01-菜谱管理系统控制台实现
  16. win10注册MSCOMM32控件及简单使用
  17. Tensorflow-Keras教程
  18. JavaScript富应用MVC MVVM框架
  19. 重装系统计算机无法启动,重装系统电脑无法开机怎么办?重装系统后电脑无法开机常见故障...
  20. pc电源改可调_如何为您的PC升级和安装新电源

热门文章

  1. 数据结构之图:加权无向图与寻找最小生成树,Python——27
  2. 使用Node 操作MySQL数据库
  3. LeetCode 2194. Excel 表中某个范围内的单元格
  4. LeetCode 851. 喧闹和富有(拓扑排序)
  5. LeetCode 1061. 按字典序排列最小的等效字符串(并查集)
  6. LeetCode 916. 单词子集(计数)
  7. 日期传递过程_买东西别再只看生产日期和保质期了!快算算你一天吃了多少添加剂?...
  8. 一台机器起多个filebeat_全自动多色丝印机一台多少钱?
  9. open函数返回-1_4.6 linux的系统调用执行探究(1)
  10. mysql的cpu飙升到500_[MySQLCPU]线上飙升800%,load达到12的解决过程