跟我学aspectj之一 ----- 简介

原创 2012年06月18日 17:06:13

一、为什么写这个系列的博客

       Aspectj一个易用的、功能强大的aop编程语言。其官网地址是:http://www.eclipse.org/aspectj/,目前最新版本为:1.7.0 RC1。但关于他使用的中文资料少之又少,几乎没有比较完整的中文资料对其做介绍。笔者用Aspectj有段时间了,对其语法还是有些了解。故把自己的经验写出来与大家分享。学习过程主要是从官方网站学习,由于笔者英文水平有限(4级没有过),有理解不到位的地方也请大家多多指正。


二、Aspectj是什么

  官方网站的的介绍是这样的:

  • a seamless aspect-oriented extension to the Javatm programming language(一种基于Java平台的面向切面编程的语言)
  • Java platform compatible(兼容Java平台,可以无缝扩展)
  • easy to learn and use(易学易用)

 三、Aspectj能做什么

        clean modularization of crosscutting concerns, such as error checking and handling, synchronization, context-sensitive behavior, performance optimizations, monitoring and logging, debugging support, and multi-object protocols。

         大意是说:干净模块化横切关注点(也就是说单纯,基本上无侵入)错误检查和处理,同步,上下文敏感的行为,性能优化监控和记录调试支持多目标协议。


四、还有那些常用的Aop以及他们的区别

  • Jboss Aop:我基本上没有用过,所以没有发言权
  • Spring Aop:Spring自己原生的Aop,只能用一个词来形容:难用。 你需要实现大量的接口,继承大量的类,所以spring aop一度被千夫所指。这于他的无侵入,低耦合完全冲突。不过Spring对开源的优秀框架,组建向来是采用兼容,并入的态度。所以,后来的Spring 就提供了Aspectj支持,也就是我们后来所说的基于纯POJO的Aop。

   区别:Spring Aop采用的动态织入,而Aspectj是静态织入。静态织入:指在编译时期就织入,即:编译出来的class文件,字节码就已经被织入了。动态织入又分静动两种,静则指织入过程只在第一次调用时执行;动则指根据代码动态运行的中间状态来决定如何操作,每次调用Target的时候都执行。有不清楚的同学,可以自己补下基础的代理知识。



五、Aop术语解释

   基本上每篇Aop的文章都必讲的内容,不过笔者所将可能与他们不同,笔者不会照本宣科。

   pointcut: 是一个(组)基于正则表达式的表达式,有点绕,就是说他本身是一个表达式,但是他是基于正则语法的。通常一个pointcut,会选取程序中的某些我们感兴趣的执行点,或者说是程序执行点的集合。

   joinPoint: 通过pointcut选取出来的集合中的具体的一个执行点,我们就叫JoinPoint.

   Advice: 在选取出来的JoinPoint上要执行的操作、逻辑。关于5种类型,我不多说,不懂的同学自己补基础。

   aspect: 就是我们关注点的模块化。这个关注点可能会横切多个对象和模块,事务管理是横切关注点的很好的例子。它是一个抽象的概念,从软件的角度来说是指在应用程序不同模块中的某一个领域或方面又pointcut 和  advice组成。

   Target:被aspectj横切的对象。我们所说的joinPoint就是Target的某一行,如方法开始执行的地方、方法类调用某个其他方法的代码。


   
    关于aop的术语,我不喜欢翻译成中文,翻译过来找不到一个准确的词,反而误人子弟。再说又为什么一定要翻译成中文勒?笔者刚来深圳的时候,面试的一家公司非要我用中文解释这些名词。最后,就没有然后了~偷笑


     

   



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

AspectJ 学习笔记

学习完AspectJ有段时间了,总体感觉这个编程语言简单易学、功能强大,但是搜到的关于AspectJ的基础内容比较少,so,笔者感觉有必要整理出这部分内容,若有不当之处,欢迎指正共同学习☺ 内容:As...
  • CSDN_Terence
  • CSDN_Terence
  • 2017年02月19日 14:45
  • 2068

AspectJ基本用法

AOP虽然是方法论,但就好像OOP中的Java一样,一些先行者也开发了一套语言来支持AOP。目前用得比较火的就是AspectJ了,它是一种几乎和Java完全一样的语言,而且完全兼容Java(Aspec...
  • vonnie_jade
  • vonnie_jade
  • 2017年04月03日 00:03
  • 787

AspectJ框架实现原理

http://www.ibm.com/developerworks/cn/java/l-aspectJ/index.html中介绍了What is AspectJ 。 AspectJ是一个代...
  • zhao9tian
  • zhao9tian
  • 2014年07月14日 15:18
  • 5115

spring中AspectJ

AspectJ 一、介绍 l  AspectJ是一个基于Java语言的AOP框架 l  Spring2.0以后新增了对AspectJ切点表达式支持 l  @AspectJ 是AspectJ...
  • CSDN_GIA
  • CSDN_GIA
  • 2017年01月27日 17:55
  • 243

关于 Spring AOP (AspectJ) 你该知晓的一切

【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/54629058 出自【...
  • javazejian
  • javazejian
  • 2017年02月21日 08:00
  • 21807

AspectJ(一)简介

AOP是一个概念,一个规范,本身并没有设定具体语言的实现,这实际上提供了非常广阔的发展的空间。AspectJ是AOP的一个很悠久的实现,它能够和Java 配合起来使用。 Aspectj是什么 “a s...
  • kanglix1an
  • kanglix1an
  • 2015年02月12日 17:24
  • 1523

AspectJ 的使用

之前在自定义annotation的时候,发现注解可以在编译的时候 做 动作,就想到了能不能像 sping aop 的 aspectj 那样去切面呢?...
  • mingover
  • mingover
  • 2017年03月04日 16:45
  • 297

AspectJ使用实例

一、在 Spring 中启用 AspectJ 注解支持 1要在 Spring 应用中使用 AspectJ 注解, 必须在 classpath 下包含 AspectJ 类库: aopallia...
  • Ronnie_xzs
  • Ronnie_xzs
  • 2017年07月22日 17:38
  • 244

AspectJ

AspectJ中科永联高级技术培训中心(www.itisedu.com)      AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法所以它有一个专门的编译器用来...
  • superdont
  • superdont
  • 2006年11月24日 19:12
  • 3338

看AspectJ在Android中的强势插入

什么是AOPAOP是Aspect Oriented Programming的缩写,即『面向切面编程』。它和我们平时接触到的OOP都是编程的不同思想,OOP,即『面向对象编程』,它提倡的是将功能模块化,...
  • x359981514
  • x359981514
  • 2017年01月16日 09:58
  • 9472
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:跟我学aspectj之一 ----- 简介
举报原因:
原因补充:

(最多只允许输入30个字)