淘宝AOP缓存技术之taobao-pamirs-proxycache

标签: 淘宝 aop 缓存 | 发表时间:2014-05-25 12:48 | 作者:247687009
出处:http://www.iteye.com
一简介

在项目中使用Spring的注解方式配置实在是不爽啊,写起费劲,维护起来也麻烦。
最近看了很多淘宝的开源项目,其中有一个项目使用AOP+XML方式配置缓存,灰常方便啊。
http://code.taobao.org/p/taobao-pamirs-proxycache/
官方给出的maven地址根本不行啊坑啊。
下面是官方给出的
    <dependency>
      <groupId>com.taobao.pamirs.proxycache</groupId>
      <artifactId>taobao-pamirs-proxycache</artifactId>
      <version>2.0.3</version>
    </dependency>




简单介绍一些proxycache
1、taobao-pamirs-proxycache 的目的是产生一种和业务代码完全隔离的缓存工具.开发只需要编写业务代码.缓存的使用完全通过配置文件进行.
2、缓存可以动态的增加和去除.
3、缓存功能和存储机制分离. 可以选择不同的数据存储方式来获得数据.
4、可以通过JMX控制台查看缓存状态,命中率,读取/写入平均耗时,修改缓存数据.
5、可以设定缓存自动更新,格式为标准 quartz 格式 (请参照: http://dogstar.javaeye.com/blog/116130)
6、提供一种动态线程缓存,可以对一个流程内的数据自动缓存.

二编译安装

下载源代码,我并没有安装乌龟,直接使用eclipse检出的
http://code.taobao.org/svn/taobao-pamirs-proxycache/trunk svn地址
这里不得的不吐槽下taobao,为嘛不好好的用UTF-8非要用GBK。。好吧转吧,还好网上有批量装换的小工具。转换完了,直接把src文件夹替换吧。
进入检出的目录下把pom.xml中的
<parent>
<groupId>com.taobao</groupId>
<artifactId>parent</artifactId>
<version>1.0.2</version>
</parent>
给注释起来。
试着编译一下吧。
mvn clean install -Dmaven.test.skip=true
不成功,报错了,这是因为它依赖了一个tair-client项目,而我们中央仓库是没有的。
怎么办,又去找tair-clitn项目吧 svn地址http://code.taobao.org/svn/tair-client-java/trunk
我检的主分支2.4 直接检出成eclipse中的项目了。
先看一下编码,utf-8 不用转,yes!!
直接编译吧 mvn clean install -Dmaven.test.skip=true
OK 成功了,
下面将我们proxycace中的tair-client 改成刚刚编译和install了tair-client的版本。
在运行安装 mvn clean install -Dmaven.test.skip=true
没有错了,成功编译安装,

三加入项目中

http://code.taobao.org/p/taobao-pamirs-proxycache/wiki/index/
照着做就好了 比较方便简单。


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [淘宝 aop 缓存] 推荐:

淘宝AOP缓存技术之taobao-pamirs-proxycache

- - 开源软件 - ITeye博客
在项目中使用Spring的注解方式配置实在是不爽啊,写起费劲,维护起来也麻烦. 最近看了很多淘宝的开源项目,其中有一个项目使用AOP+XML方式配置缓存,灰常方便啊. 官方给出的maven地址根本不行啊坑啊. 简单介绍一些proxycache. 1、taobao-pamirs-proxycache 的目的是产生一种和业务代码完全隔离的缓存工具.开发只需要编写业务代码.缓存的使用完全通过配置文件进行.

Spring AOP + Redis缓存数据库查询

- - 编程语言 - ITeye博客
我们希望能够将数据库查询结果缓存到Redis中,这样在第二次做同样的查询时便可以直接从redis取结果,从而减少数据库读写次数. 必须要做到与业务逻辑代码完全分离. 从缓存中读出的数据必须与数据库中的数据一致. 如何为一个数据库查询结果生成一个唯一的标识. Key),能唯一确定一个查询结果,同一个查询结果,一定能映射到同一个.

AOP详解

- - CSDN博客推荐文章
AOP(面向方面编程:Aspect Oriented Programing)和IoC一样是Spring容器的内核,声明式事务的功能在此基础上开花结果. 但是AOP和OOP差别较大,要很好地理解这个概念,做到心领神会还是不容易的,不过相信看完帖子,你就不再迷惑了. 编程语言最终极的目标就是能以更自然、更灵活的方式模拟世界,从原始机器语言到过程语言再到面向对象的语言,编程语言一步步地用更自然、更灵活的方式描述软件.

Spring AOP详解

- - Java - 编程语言 - ITeye博客
        最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP来解决. 一方面是为了以更加灵活的方式来解决问题,另一方面是借此机会深入学习Spring AOP相关的内容. 例如,以下需求不用AOP肯定也能解决,至于是否牵强附会,仁者见仁智者见智. 1.对部分函数的调用进行日志记录,用于观察特定问题在运行过程中的函数调用情况.

AOP的实现机制

- 风子 - ITeye论坛最新讨论
    附件中有本文的源代码和Pdf版. 本文写的很长的原因,是不希望大家学习AOP时到处找资料,大家有时间可以按照本文动手实践下,相信会有非常大的收获的,有什么问题互相交流,有问必答. AOP就是面向切面编程,我们可以从几个层面来实现AOP. 在编译器修改源代码,在运行期字节码加载前修改字节码或字节码加载后动态创建代理类的字节码,以下是各种实现机制的比较.

Spring_AOP_声明式事务

- - CSDN博客架构设计推荐文章
改进一下,因为这两次操作属于同一个业务,将转账的两个事务放到一个事务中,就会避免这样的问题,因为如果A减了1000后,如果发生异常,之后会回滚,此时两个要么同时成功,要么同时失败,这正好满足了事务的原子性和一致性,这种方式重新定义了事务的边界,所以讲事务管理加到BIZ层是合理的设计. 那么模仿上面的例子实现一个Spring的事务管理:.

Spring AOP 代理机制 JDK&CGLIB

- - 开源软件 - ITeye博客
Spring AOP使用JDK动态代理或者CGLIB来为目标对象创建代理. (建议优先使用JDK的动态代理). 如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理. 所有该目标类型实现的接口都将被代理. 若该目标对象没有实现任何接口,则创建一个CGLIB代理. 如果你希望强制使用CGLIB代理,(例如:希望代理目标对象的所有方法,而不只是实现自接口的方法) 那也可以.

Java实现aop案例

- - 行业应用 - ITeye博客
MyPersonService.java代码如下:. MyPersonServiceImpl.java代码如下:. System.out.println("在com.shihuan.jdkaop.service.impl.MyPersonServiceImpl.findPerson()中: " + name);.

Spring AOP监控SQL执行

- - CSDN博客架构设计推荐文章
         对数据库连接池Proxool比较熟悉的读者,都知道Proxool可以记录SQL执行内容和时间等信息日志. 我们可以将该日志记录专门的SQL日志文件,对于查找执行特别耗时的SQL起了不小的作用. 对于一些其他连接池,没有该特性时,本文介绍Spring AOP切面方法来记录SQL日志.

aop在接口测试中的应用

- - Taobao QA Team
最近在接口测试过程中两次应用了aop,第一次解决了更改大量脚本之苦,第二次解决了增加重复代码之痛. 一、通过aop转换图片与分类id. 多媒体平台上线后,图片空间要将数据迁移到平台统一管理. 迁移开发要做两件事,首先是做接口兼容,就是原来调用图片空间的实现,走旧数据库,改成调用媒体平台的实现,走新数据库.