aop学习

阅读更多

 

1 aop的适用场景

日志记录,跟踪,优化和监控 事务的处理 持久化 性能的优化 资源池,如数据库连接池的管理 系统统一的认证、权限管理等 应用系统的异常捕捉及处理 针对具体行业应用的横切行为

详见百度百科http://baike.baidu.com/view/73626.htm 很详尽

2 重要概念(参考spring aop http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/aop.html)

 Aspect: Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。

 Joint point:表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。

  Pointcut:表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。

  Advice:Advice 定义了在 pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。

3 几种aop的java实现

http://www.360doc.com/content/06/0801/09/10266_170258.shtml

http://wayfarer.cnblogs.com/articles/241031.html

动态代理实现aop

http://developer.51cto.com/art/200906/130539.htm

http://www.cn-java.com/www1/?action-viewnews-itemid-3595

4 spring aop

http://www.blogjava.net/DoubleJ/archive/2008/03/04/183796.html

详细的spring aop概念

http://pandonix.iteye.com/blog/336873

http://jamesby.iteye.com/blog/39899

性能较高的动态代理实现cglib。jdk动态代理主要是面向接口代理 而Cglib主要是针对类的代理

cglib采用的是继承委托类的方式,缺点是不能代理final方法。

http://baike.baidu.com/view/1254036.htm

http://blog.sina.com.cn/s/blog_6151984a0100kvkw.html

动态代理是在运行时生成委托类的代理类,而静态代理是在编译时刻就确定了代理类

http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html

5 实践spring aop

http://blog.csdn.net/tanghw/article/details/3862987

http://static.springsource.org/spring/docs/2.5.x/reference/aop.html

同时实验了采用jdk动态代理方式和cglib方式,实现代理对象aop。

比较令人疑惑的是没有发现cglib性能上的优势,执行速度差不多。???解释:

http://hi.baidu.com/haifengjava/blog/item/82649f51331a6c1e367abeee.html

看来大部分情况下还是cglib性能优越

 

 

你可能感兴趣的:(aop,java,面向切面)