配置缓存方案
2012-01-11 22:50
288 查看
5.7.1 配置缓存方案
虽然Spring Modules会提供一个代理来拦截方法并把结果保存到缓存,它并没有提供一个实际的缓存解决方案,而是要依赖于第三方的缓存方案。可以使用的方案有多个,包括:
EHCache
GigaSpaces
JBoss Cache
JCS
OpenSymphony的OSCache
Tangosol的Coherence
我们为RoadRantz程序选择EHCache,主要是因为我以前使用它的经验及能够从www.ibibio.org的Maven仓库轻易获得。无论使用哪个缓存方案,对于Spring Modules Cache的配置基本上都是一样的。
首先要做的是新建一个Spring配置文件来声明缓存。虽然可以把Spring Modules Cache配置放到RoadRantz程序加载的任意一个Spring上下文配置文件里,但最好还是把它们分开,所以我们要创建roadrantz-cache.xml来保存缓存的配置。
与Spring上下文配置文件一样,roadrantz-cache.xml也以<beans>元素为根。但为了利用Spring Modules对EHCache的支持,我们要让<beans>元素能够识别ehcache命名空间:
我们为RoadRantz程序选择的是EHCache,如果想使用其他缓存方案,需要把Spring Modules命名究竟和规划声明修改为相应的内容。表5.6列出了每个命名空间及其URI和规划URI。
表5.6 Spring Modules所支持的缓存方案的命名空间及规划
无论选择哪种缓存,都可以使用一些Spring配置元素在Spring里对缓存进行配置。表5.7列出了这些元素。
表5.7 Spring Modules的配置元素
在使用EHCache作为缓存方案时,需要告诉Spring到哪里寻找EHCache配置文件 ,这正是<ehcache:config>元素的用途所在:
在此对configLocation属性的设置告诉Spring从程序类路径的根位置加载EHCache的配置。
配置EHCache
我们已经配置了ehcache.xml文件,如程序清单5.12所示。
程序清单5.12 在ehcache.xml里配置EHCache。
在这段代码里,我们配置了两个缓存让EHCache进行管理。<defulatCache>元素是必须有的,描述了在没有找到其他缓存情况下所使用的缓存。<cache>元素定义了另一个缓存,可以在ehcache.xml里出现0次或多次(每次针对定义的一个缓存)。在此,我们只定义了rantzCache作为惟一的非默认缓存。
<defaultCache>和<cache>里指定的属性描述了缓存的行为。表5.8列出在配置EHCache缓存时可以使用的属性。
表5.8 EHCache的缓存配置属性
对于RoadRantz程序,我们配置了一个默认缓存(这是EHCache要求的),还配置了一个名为rantzCache的缓存作为主缓存。两个缓存都设置为最多可以容纳500个元素(不过期),访问频率最低的元素会被踢出,不允许磁盘溢出 。
在Spring程序上下文里配置的EHCache之后,就可以声明哪个Bean和方法应该对结果进行缓存。首先,我们来声明一个代理来缓存RoadRantz DAO层里方法的返回值。
虽然Spring Modules会提供一个代理来拦截方法并把结果保存到缓存,它并没有提供一个实际的缓存解决方案,而是要依赖于第三方的缓存方案。可以使用的方案有多个,包括:
EHCache
GigaSpaces
JBoss Cache
JCS
OpenSymphony的OSCache
Tangosol的Coherence
我们为RoadRantz程序选择EHCache,主要是因为我以前使用它的经验及能够从www.ibibio.org的Maven仓库轻易获得。无论使用哪个缓存方案,对于Spring Modules Cache的配置基本上都是一样的。
首先要做的是新建一个Spring配置文件来声明缓存。虽然可以把Spring Modules Cache配置放到RoadRantz程序加载的任意一个Spring上下文配置文件里,但最好还是把它们分开,所以我们要创建roadrantz-cache.xml来保存缓存的配置。
与Spring上下文配置文件一样,roadrantz-cache.xml也以<beans>元素为根。但为了利用Spring Modules对EHCache的支持,我们要让<beans>元素能够识别ehcache命名空间:
表5.6 Spring Modules所支持的缓存方案的命名空间及规划
命名空间 | 命名空间URI | 规划URI |
ehcache | http://www.springmodules.org/schema/ehcache | http://www.springmodules.org/schema/cache/springmodules- ehcache.xsd |
gigaspaces | http://www.springmodules.org/ schema/gigaspaces | http://www.springmodules.org/schema/cache/springmodules- gigaspaces.xsd |
jboss | http://www.springmodules.org/ schema/jboss | http://www.springmodules.org/schema/cache/springmodules- jboss.xsd |
jcs | http://www.springmodules.org/ schema/jcs | http://www.springmodules.org/schema/cache/springmodules-jcs.xsd |
oscache | http://www.springmodules.org/schema/oscache | http://www.springmodules.org/schema/cache/springmodules- oscache.xsd |
tangosol | http://www.springmodules.org/schema/tangosol | http://www.springmodules.org/schema/cache/springmodules- tangosol.xsd |
表5.7 Spring Modules的配置元素
配 置 元 素 | 用 途 |
<namespace:annotations> | 以Java 5注解来声明被缓存的方法 |
<namespace:commons-attributes> | 以Jakarta通用属性元素数据来声明被缓存的方法 |
<namespace:config> | 在Spring XML里配置缓存方案 |
<namespace:proxy> | 在Spring XML里声明一个代理来声明被缓存的方法 |
配置EHCache
我们已经配置了ehcache.xml文件,如程序清单5.12所示。
程序清单5.12 在ehcache.xml里配置EHCache。
|
<defaultCache>和<cache>里指定的属性描述了缓存的行为。表5.8列出在配置EHCache缓存时可以使用的属性。
表5.8 EHCache的缓存配置属性
属 性 | 用 于 指 定 |
diskExpiryThreadIntervalSeconds | 磁盘过期线程运行的频率(以秒为单位),也就是磁盘存留 的缓存清理过期项目的频率(默认是120秒)。 |
diskPersistent | 磁盘缓存在VM重新启动时是否保持(默认为false)。 |
eternal | 元素是否永恒。如果是永恒的,就永远不会过期(必须设置)。 |
maxElementsInMemory | 内存能够被缓存的最大元素数量(必须设置)。 |
memoryStoreEvictionPolicy | 当达到maxElementsInMemory时,如何强制进行驱逐。 默认使用“最近使用(LRU)”策略,还可以使用“先入先出 (FIFO)”和“较少使用(LFU)”策略。(默认是LRU。) |
name | 缓存的名称。(对于<cache>必须设置。) |
overflowToDisk | 当内存缓存达到maxElementsInMemory时,是否可以溢出 到磁盘。(必须设置。) |
timeToIdleSeconds | 导致元素过期的访问间隔(以秒为单位)。设置为0表示元 素可以永远空闲。(默认值是0。) |
timeToLiveSeconds | 元素在缓存里可以存在的时间(以秒为单位)。设置为0 表示元素可以在缓存里永远存在而不过期。(默认值是0。) |
在Spring程序上下文里配置的EHCache之后,就可以声明哪个Bean和方法应该对结果进行缓存。首先,我们来声明一个代理来缓存RoadRantz DAO层里方法的返回值。
相关文章推荐
- 数据库(3):配置数据缓存方案,其他形式
- 如何给企业配置可升级 Web 缓存方案
- codeigniter读取数据库的公共配置并全局缓存的实现方案
- codeigniter读取数据库的公共配置并全局缓存的实现方案
- 黄聪:MYSQL5.6缓存性能优化my.ini文件配置方案
- codeigniter读取数据库的公共配置并全局缓存的实现方案
- codeigniter读取数据库的公共配置并全局缓存的实现方案
- LoadRunner配置方案
- 使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法
- [小狼毫]安装,现成的拼音配置方案
- lucene的缓存机制和实现方案
- Hibernate4.x二级缓存详细配置步骤( EHCache)
- nginx代理 .静态文件不记录日志和配置缓存
- iis7、mvc2.0 文件上传配置方案
- 在SharePoint中如何配置基于硬盘的缓存
- Linux服务器配置方案MySQL(上)
- nginx 缓存路径配置优化
- 求公司电脑升级方案 求升级顺序 配置价格
- 配置静态缓存
- springMVC+mybatis+ehcache缓存配置实践