`
leiwuluan
  • 浏览: 707089 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

使用spring aop对web 应用数据进行memcached缓存

阅读更多

继续 上一章节[Memcached 入门-介绍-使用-优化 ]

 

http://leiwuluan.iteye.com/blog/1173402


一、 下面主要 实现spring aop 对web 应用数据 进行缓存存取。

 

说到aop 大家就会想到使用spring 的aop进行切面进行对web Action 的方法进行控制。

下图是实现的流程:

 

 


####

这边用到spring的两个类,简单介绍:

1、1 org.springframework.aop.framework.ProxyFactoryBean

 

spring 这个类可以代理目标类的所有方法

 

 




<bean id="surroundAdvice" class="com.memCached.service.aop.SurroundAdvice">

    <property name="memCachedClient" ref="memCachedClient" />

</bean>



<bean id="proxyFactory" abstract="true" class="org.springframework.aop.framework.ProxyFactoryBean">

    <property name="interceptorNames">

        <idref local="surroundAdvice" />

    </property>

    <property name="proxyTargetClass" value="true" />

</bean>



<bean id="studentRestService" parent="proxyFactory">

    <property name="target" ref="_studentRestService" />

</bean>



<bean id="_studentRestService" class="com.student.rest.service.impl.StudentServiceImpl">

    <property name="studentDao" ref="studentDao" />

</bean>

<bean id="studentDao" class="com.student.dao.impl.StudentDaoImpl" />





_studentRestService里面的所有方法将会被 surroundAdvice 给拦截。

 

 

spring 代理可以看看这位仁兄的:http://ajava.org/readbook/open/springrmdjt/15705.html

 

surroundAdvice 















implements MethodInterceptor 实现这个接口 重写invoke 方法

 

在这个方法里进行控制 如下,

 

@Override
	public Object invoke(MethodInvocation arg0) throws Throwable {

		String fname = arg0.getMethod().getName();
		String key = getKey(fname, arg0.getArguments());//方法名和参数组合成key
		StringBuffer sb = new StringBuffer();
		Object resultObj = null;
		
		if (memCachedClient != null) {
			if(MemcachedConf.CACHE_FLAG==MemcacheFlag.CLOSE_CACHE){
				memCachedClient.delete(key);
				sb.append(",不使用缓存");
				resultObj = arg0.proceed();
			}else{
				resultObj = memCachedClient.get(key);
				if(resultObj==null){
					resultObj = arg0.proceed();
					ResultDto s = (ResultDto)resultObj;
					if("success".equals(s.returncode)){
						sb.append(",数据存入缓存");
						memCachedClient.set(key, s, new Date(1000*60*60));
					}
				}else{
					sb.append(",缓存数据");
				}
			}
		}else{
			resultObj = arg0.proceed();
		}
		return resultObj;
	}
 

 

二、 一步一步 开始,从安装memcached 到web 搭建,运行,测试(有缓存与没有缓存的访问时间,测试)

 

2、1 安装 ,以windows下为例吧,linux下也是一样的简单。

        http://leiwuluan.iteye.com/blog/1172798     

 

 

 

2、2 web 搭建 ,数据库 :mysql,服务用 :rest,数据库操作 :Jdbc连接池

        下面工程,不多说。

       注意:ITeye最多10MB  只好把里面jar去了。

      可以到官网下jar  包.

 

     参考:

     http://leiwuluan.iteye.com/blog/1173402

      下个cxf:官方地址:http://cxf.apache.org/download.html

 

2、3 测试结果显示

 

无缓存处理时间:


 

---------------------------------------------------------------------------------------------

 

缓存数据处理时间:


 

待续...........................

 

 

 

 

 

 

 

  • 大小: 18.4 KB
  • 大小: 63.1 KB
  • 大小: 60.8 KB
2
3
分享到:
评论
1 楼 qq123zhz 2011-09-21  
如何处理脏数据。。。

相关推荐

    SSM整合memcached缓存

    SSM整合Memcached缓存是将Spring、SpringMVC和MyBatis这三大Java Web开发框架与Memcached相结合,以实现高效的数据缓存功能。Memcached是一款轻量级的分布式内存对象缓存系统,用于减少数据库负载,提高应用程序性能...

    Spring4+SpringMVC+mysql+memcached【同时支持mybatis+hibernate两种底层操作框架】

    在构建Web应用程序时,"Spring4+SpringMVC+mysql+memcached【同时支持mybatis+hibernate两种底层操作框架】"是一个常见的技术栈,它涵盖了多个关键组件,为高效、灵活的开发提供了坚实的基础。以下是这个技术组合中...

    simple-spring-memcached统一缓存的使用实例[整理].pdf

    《Simple-Spring-Memcached统一缓存的使用详解》 在Java应用中,尤其是在中大型项目中,有效地管理和使用缓存对于提升系统性能至关重要。Simple-Spring-Memcached(SSM)是一个流行的缓存框架,它整合了Spring框架...

    Spring与memcached整合

    标题“Spring与memcached整合”涉及的是在Java开发环境中如何将Spring框架与memcached缓存系统相结合使用,以便提升应用程序的性能和响应速度。这里我们将深入探讨这一整合过程中的关键概念和技术。 首先,...

    SSM与memcached整合项目Spring Cache

    在本项目中,我们主要探讨的是如何将Spring Cache与memcached进行整合,以提升应用程序的性能和效率。Spring Cache是Spring框架的一部分,它提供了一种抽象的缓存管理机制,可以方便地集成到各种缓存解决方案中,如...

    spring+memcached.jar

    标题中的"spring+memcached.jar"表明这是一个整合了Spring框架与Memcached缓存服务的Java应用程序。Memcached是一种广泛使用的分布式内存对象缓存系统,它能够通过减轻数据库负载来提高Web应用的性能。Spring框架是...

    spring memcached 所需jar

    集成Spring与Memcached可以显著提高应用的性能,通过缓存频繁访问的数据,降低对数据库的压力。同时,通过Spring的AOP特性,我们可以轻松地在整个应用中实现缓存管理,使代码更加简洁和模块化。

    memcache也spring,hibernate的配置

    标题中的“memcache也spring,hibernate的配置”指的是如何在Java开发环境中,结合Memcached缓存系统、Spring框架和Hibernate持久化框架进行集成配置。Memcached是一种高性能的分布式内存对象缓存系统,用于加速动态...

    Simple-Spring-Memcached

    在JAVA中使用Memcached进行行缓存是比较复杂的。Simple-Spring-Memcachd(SSM)企图通过实现几个基础的使用项来简化Memcached的使用。 该项在java-memcached客户端的基础上使用java5的注解和Sping/AspectJ的AOP,使...

    Memcached spring 的集成

    - Memcached是一个高性能的分布式内存对象缓存系统,它可以存储键值对数据,用于缓解数据库负载,提高Web应用的响应速度。 - Memcached使用简单的文本协议,支持多语言客户端,且基于内存存储,快速且轻量级。 2....

    simple-spring-memcached:一个通过注释在Spring Bean中启用Memcached缓存的嵌入式库

    一个通过注释在Spring bean中启用memcached缓存的嵌入式库。 大多数文档已移至github,但仍有一些文档仅在上可用。 介绍 当广泛使用分布式缓存时,它可能是一个庞大,繁琐,复杂而复杂的工作。 Simple Spring ...

    memcached+spring

    **正文** Memcached 是一款高性能、分布式的内存对象缓存系统,它被广泛...同时,通过Spring的AOP(面向切面编程)特性,我们能够轻松地在代码中引入缓存逻辑,降低对数据库的依赖,提升整体系统的性能和可维护性。

    Java环境下Memcached应用详解.docx

    同时,为了实现AOP(面向切面编程)对方法执行结果的缓存,可以利用Spring的`@Cacheable`、`@CacheEvict`等注解,配合`CacheResolver`和`CacheErrorHandler`进行缓存的自动管理。 在实际应用中,还需要考虑缓存的...

    hibernate4+spring4+memcached 工程

    Memcached则是一个高性能的分布式内存缓存系统,用于加速动态Web应用,通过减少对数据库的访问来提高应用程序的响应速度。 【描述】提到这是一个基于Maven构建的工程,这意味着项目的构建和依赖管理遵循Maven的标准...

    maven-springmvc-mybatis-memcached

    【描述】"maven-springmvc-mybatis -memcached"描述了一个使用Maven构建工具、SpringMVC作为前端控制器、MyBatis作为持久层框架,并结合Memcached作为缓存服务的Web应用开发环境。这个项目旨在展示如何将这些组件...

    Memcached与Spring、Mybatis集成.doc

    本文档主要讲述了如何将Memcached缓存系统与Spring框架以及MyBatis ORM工具进行集成。通过这种方式,可以有效地提高应用程序性能,尤其是在处理大量数据读取操作时,能够极大地减少数据库的压力。 #### 二、simple-...

    simple-spring-memcached-3.1.0-dist

    1. **无缝集成**:SSM通过Spring的Bean管理机制,将Memcached服务作为Spring的一个组件进行配置,使得在Spring应用中使用缓存如同使用其他服务一样简单。 2. **注解支持**:利用Spring的`@Cacheable`、`@CacheEvict...

    SSM整合memcached

    SSM整合Memcached是将Spring、Spring MVC和MyBatis这三大Java Web开发框架与Memcached内存缓存系统相结合的过程,以提升应用的性能和响应速度。Memcached是一款高性能、分布式内存对象缓存系统,广泛用于减轻数据库...

    SSM与memcached整合项目

    在SSM项目中,它可以缓存经常访问的数据,减少对数据库的直接查询,从而提升应用性能。 5. **整合过程**:整合SSM和Memcached通常包括以下几个步骤: - 配置Memcached客户端库,如spymemcached或xmemcached,这些...

Global site tag (gtag.js) - Google Analytics