- 浏览: 7331465 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在Spring中通过EHCache实现缓存,必须手动缓存或者通过AOP进行缓存实现。通过采用SpringModules进行缓存是EHCache不必进行自动缓存,由SpringMoudles提供拦截器实现,简化开发的。实现如下:
1.EHCache的配置如下:
<ehcache> <diskStore path="java.io.tmpdir" /> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="2" timeToLiveSeconds="5" overflowToDisk="true" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> <cache name="testCache" maxElementsInMemory="10000" maxElementsOnDisk="1000" eternal="false" overflowToDisk="false" diskSpoolBufferSizeMB="20" timeToIdleSeconds="60" timeToLiveSeconds="3600" memoryStoreEvictionPolicy="LFU" /> </ehcache>
2.Spring中配置如下
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- Using a EHCache cache manager --> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <!--EHCache cacheManager <property name="cacheManagerName" value="mainCache"/> --> <property name="configLocation" value="classpath:ehcache.xml" /> </bean> <!-- 使用Spring Modules对 EhCache的封装 --> <bean id="cacheProviderFacade" class="org.springmodules.cache.provider.ehcache.EhCacheFacade"> <property name="cacheManager" ref="cacheManager" /> </bean> <!-- 配置 方法 拦截器 --> <!-- 缓存拦截器 --> <bean id="cachingInterceptor" class="org.springmodules.cache.interceptor.caching.MethodMapCachingInterceptor"> <property name="cacheProviderFacade" ref="cacheProviderFacade" /> <property name="cachingModels"> <!-- 进行cache缓存 --> <props> <!-- 所有TicketService对象中,以get开头的方法都将进行缓存 --> <prop key="com.easyway.ecache.service.TicketService.get*">cacheName=testCache</prop> </props> </property> </bean> <!-- 缓存刷新拦截器 --> <bean id="flushingInterceptor" class="org.springmodules.cache.interceptor.flush.MethodMapFlushingInterceptor"> <property name="cacheProviderFacade" ref="cacheProviderFacade" /> <property name="flushingModels"> <!-- 进行cache刷新(清除) --> <props> <prop key="com.easyway.ecache.service.TicketService.set*">cacheNames=testCache</prop> </props> </property> </bean> <!-- 相关的服务 --> <bean id="ticketService" class="com.easyway.ecache.service.TicketService"></bean> <!-- 配置 基于BeanName规则的动态代理封装 --> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <!-- 设置拦截的bean名称 --> <property name="beanNames"> <list> <value>ticketService</value> </list> </property> <!-- 设置拦截器的名称 --> <property name="interceptorNames"> <list> <value>cachingInterceptor</value> <value>flushingInterceptor</value> </list> </property> </bean> </beans>
仔细观察可知道上面带颜色的类其实是几个采用AOP实现的拦截器而已。
3.编写测试服务类
package com.easyway.ecache.service; import java.util.List; /** * 对其所有的以get* 方式命令的方法,进行缓存处理。当调用set* 命令时,需要其删除缓存 * @author longgangbai * */ @SuppressWarnings("unchecked") public class TicketService { /** * 需要缓存的集合 */ private List ticketList; /** * 需要缓存的服务名称 */ private String serviceName; public String getServiceName() { return serviceName; } public void setServiceName(String serviceName) { this.serviceName = serviceName; } public List getTicketList() { return ticketList; } public void setTicketList(List ticketList) { this.ticketList = ticketList; } /** * 修改的服务端名称备注但是不缓存 * @param serviceName */ public void changesetServiceName(String serviceName) { this.serviceName = serviceName; } }
4.测试用例如下
package com.easyway.ecache.service; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 测试SpringModule EhCache 的整合的应用 * @author longgangbai * */ public class Test { public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath*:applicationContext.xml"); TicketService ticketSrv=(TicketService)ctx.getBean("ticketService"); String srvName0=ticketSrv.getServiceName(); //获取初始化服务端名称 System.out.println("srvName0="+srvName0); //设置存储的名称 ticketSrv.setServiceName("ticketService"); srvName0=ticketSrv.getServiceName(); //获取服务端名称 System.out.println("srvName1="+srvName0); //修改服务名称但是不缓存 ticketSrv.changesetServiceName("serviceName"); srvName0=ticketSrv.getServiceName(); //获取服务端名称来源自缓存注意观察 System.out.println("srvName2="+srvName0); // //srvName0=null //srvName1=ticketService //srvName2=ticketService } }
5.测试结果如下:
srvName0=null
srvName1=ticketService
srvName2=ticketService
6.采用的类库如下:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="src/spring.jar"/>
<classpathentry kind="lib" path="src/spring-modules-cache.jar"/>
<classpathentry kind="lib" path="src/ehcache-1.6.0-beta4.jar"/>
<classpathentry kind="lib" path="src/commons-lang.jar"/>
<classpathentry kind="lib" path="src/commons-logging.jar"/>
<classpathentry kind="lib" path="src/oro-2.0.7.jar"/>
<classpathentry kind="lib" path="src/cglib-nodep-2.1_3.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
- SpringModulesEHCache.rar (6.7 MB)
- 下载次数: 339
发表评论
-
【转】在项目中使用多个数据源-多sessionFactory方案
2013-05-10 16:30 3126适用范围:适合SSH架构访问多个数据库, ... -
【转】使用spring的动态路由实现数据库负载均衡
2013-03-17 22:57 3299使用spring的动态路由实现数据库负载均衡 系统中 ... -
【转】spring 数据库读写分离
2013-03-17 22:56 2801什么是数据库的读写分离 数据库的读写分离简单的说是把对数据 ... -
[转]Spring+iBatis+JOTM实现JTA事务
2013-03-17 22:51 3053Spring+iBatis+JOTM实现JTA事务 ... -
Spring 和Axis2整合相关那些事
2012-12-29 12:58 10417Axis2优劣: 现在用axis2开发一个webse ... -
【转】JAVA并发容器代码随读
2012-12-06 15:29 2947转载自 http://rdc.taobao.c ... -
Spring3.04和Junit4
2011-11-27 18:15 4389在Spring3.x以上必须采用 ... -
Spring加载属性文件的扩展
2011-08-22 12:21 3021在项目中一个属性文件配置信息,提供给数据连接信息 ... -
Brap和Spring整合(简单权限验证)
2011-07-26 10:31 1385在使用Spring的发 ... -
Quartz的任务的临时启动和暂停和恢复
2011-07-16 10:18 40193在项目中需要手动启停某些服务,那么需要有一个控 ... -
Quartz中定时调度EJB3.0服务
2011-07-13 22:25 2933在quartz2.0中只支持EJb2.0的服务 ... -
Quartz中定时调度EJB2.0服务
2011-07-13 22:12 2179在Quartz2.0中提供支持EJB2.0 ... -
Quartz的简单使用
2011-07-13 22:05 9950最近工作需要学习quartz,那么必须首先了解三个概念:调度器 ... -
Brap 远程访问调用 和Spring整合(二)
2010-12-08 14:52 2004Brap和 Spring 整合使用如 ... -
闲着没事Hessian开发WebService的总结(二)
2010-12-07 20:30 4028在Spring和Hessian整合中,以前 ... -
Spring JMX的学习总结(三) 基于注释的JMX的使用
2010-12-03 17:26 3358具体实现JMX的注释的类: package c ... -
Spring JMX的总结学习(二) 注解实现MBean
2010-12-03 17:24 6274本文采用Spring JMX ... -
Spring JMX的总结学习(一)基于标准接口的JMX
2010-12-03 17:21 3776在Spring中采用JMX标准形式的,开发相关的Spr ... -
Spring JMS的开发应用--自定义消息转换器的使用(四)
2010-12-03 01:37 2508在Spring JMS、中可以通过实现Me ... -
Spring JBOSSMQ JMS的开发应用(三)
2010-11-30 20:11 2340如果用过JMS的话,会发现它类似写JD ...
相关推荐
在Spring中,AOP是通过定义切面(Aspect)和通知(Advice)来实现的,切面定义了关注点的逻辑结构,而通知则定义了何时、何地以及如何执行这些逻辑。 接下来,我们引入EHCache。EHCache支持本地内存缓存、分布式...
本文将深入探讨如何结合Spring AOP与EhCache实现一个简单的缓存实例,以便优化Java应用的运行效率。 首先,让我们了解Spring AOP。Spring AOP是Spring框架的一部分,它允许我们在不修改业务代码的情况下,通过定义...
为了在Spring中使用ehCache,我们需要添加相应的依赖,并配置Spring AOP以拦截需要缓存的方法。在Spring的配置文件中,我们可以使用`<aop:config>`和`<cache:annotation-driven>`标签来启用AOP和缓存注解支持。然后...
在"Spring+Hibernate+ehcache整合"项目中,开发者已经完成了一个将这三个框架集成的基础工程。虽然Struts没有被明确提及,但通常在Web开发中,Spring与Struts结合可以构建更完整的MVC架构。这个整合项目可能包含以下...
spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...
Spring AOP 和 EhCache 结合使用提供了一个简单而有效的缓存解决方案,主要目的是优化系统性能,减少对数据库的频繁访问。下面将详细解释这个解决方案的关键组成部分。 首先,EhCache 是一个广泛使用的开源 Java ...
在Spring中,Ehcache可以被集成为一个缓存提供者,通过@Cacheable、@CacheEvict等注解实现方法级别的缓存控制。这有助于提升查询效率,尤其是在处理大数据量时。 **整合过程** 1. **配置Spring** 首先,我们需要...
这篇博客“spring struts2 hibernate ehcache整合”显然探讨了如何将这四个组件集成到同一个项目中,以提升应用程序的性能和效率。以下是关于这些技术及其整合的关键知识点的详细说明: 1. **Spring框架**:Spring...
开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE...
在IT领域,Spring框架是一个广泛使用的Java应用框架,它提供了许多...在实际项目中,结合aopalliance.jar、spring-aop-4.1.6.RELEASE.jar和spring-aspects-4.1.6.RELEASE.jar,我们可以构建出高效且易于管理的系统。
赠送jar包:spring-aop-5.2.0.RELEASE.jar; 赠送原API文档:spring-aop-5.2.0.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.2.0.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.2.0.RELEASE.pom;...
本文将详细介绍如何在Spring3和Hibernate4环境下整合Ehcache,实现数据缓存功能,以提高应用性能。 1. **Spring3与Hibernate4整合** 在Spring3中配置Hibernate4,我们需要在配置文件中定义SessionFactory,并使用...
基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop
SpringMVC、Mybatis、Spring、Shiro和Ehcache这五个技术组件是Java Web开发中的关键工具,它们各自承担着不同的职责,并通过整合来实现强大的功能。下面将详细阐述这些技术以及它们在整合中的作用。 首先,...
**Spring AOP 实现机制详解** Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许程序员在不修改源代码的情况下,通过“切面”来插入额外的业务逻辑,如日志、事务管理等。AOP的引入极大地提高了代码的...
在Spring中,AOP主要是通过代理模式实现的,有JDK动态代理和CGLIB两种方式。 对于Spring事务管理,我们通常有两种方式:编程式和声明式。编程式事务管理需要在代码中显式地调用begin、commit、rollback等事务控制...
NULL 博文链接:https://zhang-yingjie-qq-com.iteye.com/blog/319927
在Spring中,这些关注点被封装为“切面”(Aspect),并在运行时通过“通知”(Advice)动态地插入到目标对象的方法执行流程中。通知有五种类型:前置通知(Before)、后置通知(After)、返回后通知(After ...