Java缓存框架使用EhCache结合Spring AOP
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相关推荐
- 【EhCache】Java缓存框架使用EhCache结合Spring AOP
为什么80%的码农都做不了架构师?>>> 一.Ehcache简介 EhCache是一个纯Java的进程内缓存框架,具有如下特点: 1. 快速简单,非常容易和应用 ...
- Spring - Java/J2EE Application Framework 应用框架 第 5 章 Spring AOP: Spring之面向方面编程G
第 5 章 Spring AOP: Spring之面向方面编程 5.1. 概念 面向方面编程 (AOP) 提供从另一个角度来考虑程序结构以完善面向对象编程(OOP). 面向对象将应用程序分解成 各个层 ...
- Spring - Java/J2EE Application Framework 应用框架 第 5 章 Spring AOP: Spring之面向方面编程
第 5 章 Spring AOP: Spring之面向方面编程 5.1. 概念 面向方面编程 (AOP) 提供从另一个角度来考虑程序结构以完善面向对象编程(OOP). 面向对象将应用程序分解成 各个层 ...
- 【EhCache: 一款Java的进程内缓存框架】EhCache 是什么、代码实战、版本3的改进
文章目录 1 EhCache 是什么 2 EhCache 版本2 代码实战 Demo pom.xml TestEH.java ehcache.xml 3 EhCache 版本3 代码实战 Demo p ...
- Java程序员必会的Spring AOP在实际项目中的应用
很久没有用过Java的AOP,最近接触到了一个需求,恰好可以用AOP的思想来实现,就此总结一下. 目录 AOP简介 ① pointcut(切入点) ② advice(通知) ③ aspect(切面) ...
- 三大缓存框架(Ehcache+Memcache+Redis)基础
1.Ehcache(纯Java的进程内缓存框架,也叫二级缓存) Ehcache是一个开源的.设计于提高在数据从RDBMS中取出来的高花费.高延迟采取的一种缓存方案(在Java项目广泛的 使用).正因为 ...
- JAVA常用框架系列教程之Spring(附视频)
大家好,框架作为程序员开发重要的学习部分,在java开发中,框架的学习也尤为的重要,框架不仅可以帮助大家高效的进行开发工作,更加能够优化工作步骤,从而提高开发人员的工作效率.为帮助Java编程的初学者 ...
- s2sh框架搭建(基于spring aop)
对于spring aop 是如何管理事务的,请看一下:http://bbs.csdn.net/topics/290021423 1.applicationContext.xml <?xml ve ...
- SSM框架笔记10:Spring AOP基础
Spring AOP基础 AOP:Aspect-Oriented Programming 面向切面编程. Spring的AOP作用在于解耦.AOP让一组类共享相同的行为(比如事务管理.日志管理 ...
最新文章
- linux webservice服务器端,Linux查看资源使用情况 webservice服务端口监控
- 最简单的视音频播放演示样例5:OpenGL播放RGB/YUV
- 转载:python引用DLL文件的方法
- java加载sql2016_SQl Server 2016 with R.
- z-index在IE中的迷惑
- VPC 2007 Console界面消失以及解决方法
- 联想Z6预告海报公布:最轻4000mAh手机,没有之一
- mysql 5.1.71_MySQL升级从5.1.71到5.7.17
- android核心系列--1,组件生命周期
- 近世代数概论------有理数与域
- Excel 2010 VBA 入门 121 ActiveX控件
- DELPHI XE10 fmx表格控件Grid单元格根据内容值来设置颜色
- 剑三 服务器状态查询,数据互通全面启动_剑侠情缘网络版叁_金山游戏官方网站_金山逍遥Xoyo.com...
- 计算机辅助设计基础试题,CAD基础试题「附答案」
- Java项目01-菜谱管理系统控制台实现
- win10注册MSCOMM32控件及简单使用
- Tensorflow-Keras教程
- JavaScript富应用MVC MVVM框架
- 重装系统计算机无法启动,重装系统电脑无法开机怎么办?重装系统后电脑无法开机常见故障...
- pc电源改可调_如何为您的PC升级和安装新电源
热门文章
- 数据结构之图:加权无向图与寻找最小生成树,Python——27
- 使用Node 操作MySQL数据库
- LeetCode 2194. Excel 表中某个范围内的单元格
- LeetCode 851. 喧闹和富有(拓扑排序)
- LeetCode 1061. 按字典序排列最小的等效字符串(并查集)
- LeetCode 916. 单词子集(计数)
- 日期传递过程_买东西别再只看生产日期和保质期了!快算算你一天吃了多少添加剂?...
- 一台机器起多个filebeat_全自动多色丝印机一台多少钱?
- open函数返回-1_4.6 linux的系统调用执行探究(1)
- mysql的cpu飙升到500_[MySQLCPU]线上飙升800%,load达到12的解决过程