SpringMVC集成缓存框架Ehcache
在互联网应用中,应用并发比传统企业及应用会高出很多。解决并发的根本在于系统的响应时间与单位时间的吞吐量。思路可分为:一减少系统的不必要开支(如缓存),二是提高系统单位时间内的运算效率(如集群)。 在硬件资源一定的情况下,在软件层面上解决高并发会比较经济实惠一些。缓存又分为客户端缓存(web浏览器)与服务器缓存;常用的比较流行的服务器缓存框架如Ehcache。下面针对最近学习的Ehcache缓存做一下介绍。
一、ehcache需要引入包
- <!--ehcache 相关包 -->
- <dependency>
- <groupId>net.sf.ehcache</groupId>
- <artifactId>ehcache</artifactId>
- <version>2.7.</version>
- </dependency>
- <dependency>
- <groupId>com.googlecode.ehcache-spring-annotations</groupId>
- <artifactId>ehcache-spring-annotations</artifactId>
- <version>1.2.</version>
- </dependency>
二、配置applicationContext-ehcache.xml和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:cache="http://www.springframework.org/schema/cache" xmlns:context="http://www.springframework.org/schema/context"
- 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">
- <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>
- <!-- 开启spring缓存 -->
- <cache:annotation-driven cache-manager="cacheManager" />
- </beans>
ehcache配置文件
必须导入导入命名空间
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
以及ehcache缓存管理器及开启;
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- updateCheck:是否检查当前使用的Ehcache的版本 -->
- <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true"
- monitoring="autodetect" dynamicConfig="true">
- <!-- 缓存到磁盘路径 -->
- <diskStore path="d:/cache" />
- <!--
- eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期
- maxElementsInMemory:缓存中允许创建的最大对象数
- timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前,两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是 就意味着元素可以停顿无穷长的时间。
- timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。
- memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。
- FIFO,先进先出
- LFU,最少被使用,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。
- LRU,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。
- -->
- <!-- 默认缓存 -->
- <defaultCache maxElementsInMemory="" eternal="false"
- timeToIdleSeconds="" timeToLiveSeconds="" overflowToDisk="true"
- maxElementsOnDisk="" diskPersistent="false"
- diskExpiryThreadIntervalSeconds="" memoryStoreEvictionPolicy="LRU" />
- <!-- 自定义缓存 -->
- <cache name="baseCache" maxElementsInMemory=""
- maxElementsOnDisk="" eternal="false" overflowToDisk="true"
- diskSpoolBufferSizeMB="" timeToIdleSeconds="" timeToLiveSeconds=""
- memoryStoreEvictionPolicy="LFU" />
- </ehcache>
ehcache.xml
一般使用默认的缓存defaultCache,根据缓存的配置不同,可自定义缓存如文件中的baseCache。
三、ehcache缓存的使用
1、使用@Cacheable注解类缓存数据
@Cacheable注解可以用在方法或者类级别,用在方法上,仅仅缓存此方法的返回值; 用在类上,针对该类所有的方法的返回值缓存。下面展示方法级别缓存,,
当缓存中没有该对象的时候,当然要从数据库里面访问了,从数据库查出来之后,缓存管理器会将此对象放到缓存中,下一次访问的时候,只要该对象没有消亡则会从缓存里取,不会再查询数据库。
@Cacheable注解包含三个参数 @Cacheable(value,key,condition);
value:我们自定义缓存的name,将被缓存的位置;
key :任何存储在缓存中的数据为了高速访问都需要一个key。spring默认使用被@Cacheable注解的方法的签名来作为key,当然你可以重写key,自定义key可以使用SpEL表达式。key的值可是使用 key = "#page" SpEl表达式,也可以使用 'String' 字符形式。
condition:也使用SpEl表达式,用条件控制是否缓存。
2、@CacheEvict 这个注解的作用就是当数据发生变化的时候(增删改)清除缓存,做到数据同步
参数value对应的默认缓存或者自定义缓存;key 对应哪个缓存
SpringMVC集成缓存框架Ehcache的更多相关文章
- spring+springMVC+JPA配置详解(使用缓存框架ehcache)
SpringMVC是越来越火,自己也弄一个Spring+SpringMVC+JPA的简单框架. 1.搭建环境. 1)下载Spring3.1.2的发布包:Hibernate4.1.7的发布包(没有使用h ...
- 缓存框架EhCache的简单使用
缓存框架EhCache的简单使用: 1.Spring和EhCache框架整合 1.1导入jar包 <dependencies> <dependency> <groupId ...
- Java的进程内缓存框架:EhCache (转)
EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache缓存的特点: 1. 快速. 2. 简单. 3. 多种缓存 ...
- Java的进程内缓存框架:EhCache
EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache缓存的特点: 1. 快速. 2. 简单. 3. 多种 ...
- 缓存框架Ehcache相关
单点缓存框架 只能针对单个jvm中,缓存容器存放jvm中,每个缓存互不影响 Ehcache gauva chache 内置缓存框架 jvm缓存框架 分布式缓存框架(共享缓存数据) Redis ...
- SpringMVC集成shrio框架
使用SHIRO的步骤:1,导入jar2,配置web.xml3,建立dbRelm4,在Spring中配置 添加所需jar包: <!--Apache Shiro所需的jar包--> <d ...
- Java 开源分布式缓存框架Ehcache
http://www.codeceo.com/article/java-ehcache.html
- java 工作流项目源码 SSM 框架 Activiti-master springmvc 集成web在线流程设计器
即时通讯:支持好友,群组,发图片.文件,消息声音提醒,离线消息,保留聊天记录 (即时聊天功能支持手机端,详情下面有截图) 工作流模块---------------------------------- ...
- Java分布式缓存框架
http://developer.51cto.com/art/201411/457423.htm 在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓 ...
随机推荐
- 在大于32GB或64GB容量的SD卡上使用NOOB安装树莓派 - Using NOOB on SD cards larger than 32GB or 64GB for Raspberry Pi
在树莓派上玩了一小段时间了,因为装的软件包越来越多,所以越来越感觉16G的SD卡没办法长期使用下去.于是采购了几张64G的SD卡,打算周末装上系统.可是按照一般的流程,在Windows下用SD For ...
- JSON.parse
摘自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse The J ...
- jmeter上传文件搞了一天,才搞定,没高人帮忙效率就是低,赶紧记下来,以备后用
先用谷歌浏览器抓包,抓到的包类似这样: 在jmeter里添加一个http请求,配置好参数,方法,端口,路径等, 勾选 在“同请求一起发送参数”里填写上面抓包的部分数据: 分别对应录入,勾选“编码” 我 ...
- webservice wsdl axis2报错 Provider com.bea.xml.stream.MXParserFactory not found
错误信息: Exception in thread "main" javax.xml.stream.FactoryConfigurationError: Provider com. ...
- js 表格实现
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)
本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...
- IP验证正则表达式
Regex r = new Regex(@"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$" ...
- axis 理解
前言 使用numpy sum(a,axis=0)的时候,对axis参数比较费解,和直觉不太一样,故此记录 b = np.arange(12).reshape(3,4) b array([[ 0, 1, ...
- mybatis单个插入和批量插入的简单比较
在J2EE项目中,mybatis作为主流持久层框架,许多知识值得我们去钻研学习,今天,记录一下数据插入性能(单个插入和批量插入). 一,测试对象 public class Test { private ...
- ORACLE 自治事物
ORACLE 自治事物 一.问题 (1)现象 一个表A,存在一个触发器,该触发器用来统计表A的数量,并将结果更新到B表.此时,java代码里面调用insert into select 语句,会发生 ...