1. 使用java5的注解和Sping/AspectJAOP 来实现Memcached的缓存
  2.  
  3. 今天要介绍的是Simple-Spring-Memcached,它封装了对MemCached的调用,使MemCached的客户端开发变得超乎寻常的简单,只要一行代码就行:
  4.  
  5. @ReadThroughAssignCache(assignedKey = "VETS", expiration = , namespace = "NELZ")
  6.  
  7. 是不是很神奇?这行代码指定了MemCachedkey,过期时间和命名空间。假设你的MemCached服务器IP是:196.168.10.101,端口是:,那么在数据调用的配置文件中只要加上下面配置代码就可以了:
  8.  
  9. <import resource="classpath:simplesm-context.xml" />
  10. <bean id="memcachedConnectionBean" class="net.nelz.simplesm.config.MemcachedConnectionBean">
  11. <property name="consistentHashing" value="true" />
  12. <property name="nodeList" value="196.168.10.101:12000" />
  13. </bean>
  14.  
  15. simplesm-context.xml的内容中,可以看出它所封装的类和方法:
  16.  
  17. <bean id="memcachedClientFactory" class="net.nelz.simplesm.config.MemcachedClientFactory" >
  18. property name="bean" ref="memcachedConnectionBean" />
  19. </bean>
  20. <bean id="memcachedClient" factory-bean="memcachedClientFactory" factory-method="createMemcachedClient" />
  21. <bean id="methodStore" class="net.nelz.simplesm.aop.CacheKeyMethodStoreImpl" />
  22. <bean id="net.nelz.simplesm.DefaultKeyProvider" class="net.nelz.simplesm.impl.DefaultKeyProvider">
  23. <property name="methodStore" ref="methodStore" />
  24. </bean>
  25. <bean id="readThroughSingleCache" class="net.nelz.simplesm.aop.ReadThroughSingleCacheAdvice">
  26. <property name="cache" ref="memcachedClient" />
  27. <property name="methodStore" ref="methodStore" />
  28. <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
  29. </bean>
  30. <bean id="readThroughMultiCache" class="net.nelz.simplesm.aop.ReadThroughMultiCacheAdvice">
  31. <property name="cache" ref="memcachedClient" />
  32. <property name="methodStore" ref="methodStore" />
  33. <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
  34. </bean>
  35. <bean id="readThroughAssignCache" class="net.nelz.simplesm.aop.ReadThroughAssignCacheAdvice">
  36. <property name="cache" ref="memcachedClient" />
  37. <property name="methodStore" ref="methodStore" />
  38. <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
  39. </bean>
  40.  
  41. <bean id="updateSingleCache" class="net.nelz.simplesm.aop.UpdateSingleCacheAdvice">
  42. <property name="cache" ref="memcachedClient" />
  43. <property name="methodStore" ref="methodStore" />
  44. <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
  45. </bean>
  46.  
  47. <bean id="updateMultiCache" class="net.nelz.simplesm.aop.UpdateMultiCacheAdvice">
  48. <property name="cache" ref="memcachedClient" />
  49. <property name="methodStore" ref="methodStore" />
  50. <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
  51. </bean>
  52. <bean id="updateAssignCache" class="net.nelz.simplesm.aop.UpdateAssignCacheAdvice">
  53. <property name="cache" ref="memcachedClient" />
  54. <property name="methodStore" ref="methodStore" />
  55. <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
  56. </bean>
  57. <bean id="invalidateSingleCache" class="net.nelz.simplesm.aop.InvalidateSingleCacheAdvice">
  58. <property name="cache" ref="memcachedClient" />
  59. <property name="methodStore" ref="methodStore" />
  60. <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
  61. </bean>
  62. <bean id="invalidateMultiCache" class="net.nelz.simplesm.aop.InvalidateMultiCacheAdvice">
  63. <property name="cache" ref="memcachedClient" />
  64. <property name="methodStore" ref="methodStore" />
  65. <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
  66. </bean>
  67.  
  68. <bean id="invalidateAssignCache" class="net.nelz.simplesm.aop.InvalidateAssignCacheAdvice">
  69. <property name="cache" ref="memcachedClient" />
  70. <property name="methodStore" ref="methodStore" />
  71. <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
  72. </bean>
  73.  
  74. Simple-Spring-Memcached还提供了一个例子,在springpetClinic例子中加入了几行代码,就实现了对MemCached的调用:
  75.  
  76. import net.nelz.simplesm.annotations.ReadThroughAssignCache;
  77.  
  78. import net.nelz.simplesm.annotations.ReadThroughSingleCache;
  79.  
  80. @ReadThroughAssignCache(assignedKey = "VETS", expiration = , namespace = "NELZ")
  81.  
  82. public Collection<Vet> getVets() {
  83.  
  84. System.out.println("\n ! ! !Gonna wait a bit: " + new Date() + "\n");
  85.  
  86. try {
  87.  
  88. Thread.sleep();
  89.  
  90. } catch (Exception ex) {}
  91.  
  92. return sessionFactory.getCurrentSession().createQuery("from Vet vet order by vet.lastName, vet.firstName").list();
  93.  
  94. }
  95.  
  96. 为了加强测试的效果,在第一次读取数据时,故意停顿了一下(sleep)。
    转载自:http://www.blogjava.net/hao446tian/archive/2012/04/10/373725.html
  1.  

版权声明:本文为博主原创文章,未经博主允许不得转载。

使用java5的注解和Sping/AspectJ的AOP 来实现Memcached的缓存的更多相关文章

  1. (转)Spring使用AspectJ进行AOP的开发:注解方式

    http://blog.csdn.net/yerenyuan_pku/article/details/69790950 Spring使用AspectJ进行AOP的开发:注解方式 之前我已讲过Sprin ...

  2. AspectJ对AOP的实现

    一:你应该明白的知识 1.对于AOP这种编程思想,很多框架都进行了实现.Spring就是其中之一,可以完成面向切面编程.然而,AspectJ也实现了AOP的功能,且实现方式更为简捷,使用更加方便,而且 ...

  3. Spring框架(6)---AspectJ实现AOP

    AspectJ实现AOP 上一篇文章Spring框架(4)---AOP讲解铺垫,讲了一些基础AOP理解性的东西,那么这篇文章真正开始讲解AOP 通过AspectJ实现AOP要比普通的实现Aop要方便的 ...

  4. 开涛spring3(6.4) - AOP 之 6.4 基于@AspectJ的AOP

    Spring除了支持Schema方式配置AOP,还支持注解方式:使用@AspectJ风格的切面声明. 6.4.1  启用对@AspectJ的支持 Spring默认不支持@AspectJ风格的切面声明, ...

  5. Spring框架学习09——基于AspectJ的AOP开发

    1.基于注解开发AspectJ (1)AspectJ注解 基于注解开发AspectJ要比基于XML配置开发AspectJ便捷许多,所以在实际开发中推荐使用注解方式.关于注解的相关内容如下: @Aspe ...

  6. Spring -- aop, 用Aspectj进行AOP开发

    1. 概要 添加类库:aspectjrt.jar和aspectjweaver.jar 添加aop schema. 定义xml元素:<aop:aspectj-autoproxy> 编写jav ...

  7. Spring整合AspectJ的AOP

    学而时习之,不亦说乎!                              --<论语> 看这一篇之前最好先看前面关于AOP的两篇. http://www.cnblogs.com/z ...

  8. 利用基于@AspectJ的AOP实现权限控制

    一. AOP与@AspectJ AOP 是 Aspect Oriented Programming 的缩写,意思是面向方面的编程.我们在系统开发中可以提取出很多共性的东西作为一个 Aspect,可以理 ...

  9. Spring 基于 AspectJ 的 AOP 开发

    Spring 基于 AspectJ 的 AOP 开发 在 Spring 的 aop 代理方式中, AspectJ 才是主流. 1. AspectJ 简介 AspectJ 是一个基于 java 语言的 ...

随机推荐

  1. JSP报错Syntax error, insert ";" to complete Statement

    org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 7 in ...

  2. 我理解的BFC(块级格式化上下文)

    BFC(Block formatting context) 直译为"块级格式化上下文". BFC它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Bl ...

  3. 3D模板阴影原理

    3D模板阴影原理 1:先从3dsMax中导出一个简单的场景,一个园环,球,平面. 2:园环直接面向光源,园环对球体来说是一个光线的阻挡物,园环在它上面形成阴影,同时,园环和球体对平面来说是光线的阻挡物 ...

  4. jquery 获取表单的用户输入值的方法

    以前的表单中的select input textarea的用户选择输入是通过jQuery的val()方法获取到的,在三一Java前端大拿教我了一个方法可以不用那么麻烦获取数据,只要在这些表单元素上加n ...

  5. 04_web基础(五)之cookie与session

    29.Http协议无记忆带来的问题 什么是会话:可简单理解为:用户开一个浏览器,访问某一个web站点,在这个站点点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一次会话. 在一 ...

  6. Android 数据库框架总结(转)

    转自 http://blog.csdn.net/da_caoyuan/article/details/61414626 一:OrmLite 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完 ...

  7. NDK环境搭建方法2

    1.新建项目NDKDemo3 2.新建com.example.shixm.ndkdemo3.MyNdk.java 3.右键main文件夹,New->Folder->JNI Folder 4 ...

  8. javascript 表格排序和表头浮动效果(扩展SortTable)

    前段时间一个项目有大量页面用到表格排序和表头浮动的效果,在网上找了几个表格排序的js代码,最后选择了 Stuart Langridge的SortTable,在SortTable基础上做了些扩展,加上了 ...

  9. Session和Cookie的理解

    原文地址:https://juejin.im/post/5aede266f265da0ba266e0ef

  10. 第三章 列表(a)接口与实现