我的第一个面向切面AspectJ程序

   AspectJ是Java语言的一个AOP实现,其主要包括两个部分,第一个部分定义了一套如何表达、定义面向切面(AOP)编程中的相关概念(如连接点、切入点、增强、切面等)的语法规范。通过这套语言规范,我们可以方便地用AOP来解决java语言中存在的交叉关注点问题。AspectJ的另外一个部分是工具部分,包括编译器、调试程序的工具以及为了更方便开发基于AOP应用而设计的开发集成工具等。
   AspectJ是最早、功能比较强大的AOP实现之一,是为数不多的比较完整的AOP的实现,在AOP领域基本上充当着行业领头羊的角色,被誉为AOP领域的急先锋。AspectJ的功能比较强大,从连接点、切入点、通知、引介到切面定义都有一套比较完整的机制,很多其它语言的AOP实现,也借鉴或采纳了AspectJ中很多设计。在Java领域,AspectJ中的很多语法结构基本上成了AOP领域的标准,比如:在Spring2.0中,AOP部分就作了比较大的调整,不但引入了对AspectJ的支持,其自己的AOP核心部分的很多使用方法、定义乃至表示等都力求保持与AspectJ一致。因此,要学习使用AOP,我们有必要从AspectJ开始,因为他本身就是java语言AOP解决方案,就算不用Spring,也可以独立地用于我们的Java应用程序中。
   AspectJ是Eclipse下面的一个开源项目,当前发布的版本是AspcetJ5。

  

   当然,在实际开发中,我们很少使用命令行来编译或调试程序了。一般情况下都是使用功能比较强大的专业Java开发工具及平台。AspectJ除一套完整的语法规范以外,还提供在各种常用java开发工具开发AspectJ程序的插件,包括Eclipse、JBuild、NetBeans、JDeveloper等。在这里,使用AspectJ与Eclipse集成应用。
   首先需要下载并安装AspectJ的Eclipse插件AJDT(AspectJ Development Tools)。

 

   直接到AJDT的官方网站http://www.eclipse.org/ajdt/上面,根据自己的Eclipse版本,选择下载相应的版本的插件。下载下来的插件是一个形如ajdt_1.4_for_eclipse_3.2.zip的压缩文件,其中包含features及plugins两个目录。

  Ajdt的安装和其它eclipse插件完全一样,解压,features及plugins拷贝覆盖到相应目录,重启eclipse就OK了。进入eclipse,发现多了个按钮,有AJ字样,点击就弹出创建AspectJ项目的窗口。先别着急,再查看window->preferences发现多了AspectJ和Visualiser栏目,随便点点,也不用做什么更改,就能确认AJDT已经成功的集成进来了。

 

  下面演示在Eclipse中建立AspectJ版本HelloWorld,首先需要安装AspectJ的Eclipse插件AJDT。然后新建一个AspectJ工程,可以点击右上方带AJ字样的新建工程快速新建,也可以像建立普通工程那样在项目栏右键点击New-》other,选择AspectJ Project工程 如下图:

 

   然后在工程中新建一个demo包.里面建个叫Hello的普通Java类,内容如下:

  1. package demo;
  2. public class Hello {
  3.     public void sayHello() {
  4.         System.out.println("Hello YangFan!");
  5.     }
  6.     public static void main(String[] args) {
  7.         Hello h = new Hello();
  8.         h.sayHello();
  9.     }
  10. }

 

   然后使用使用Eclipse新建一个名为HelloAspect的Aspect切面,如下图

 

   在HelloAspect中定义了一个名为somePointcut()的切入点,定义了两个增强,其中一个是在连接点前执行,一个是在连接点后执行。HelloAspect的全部代码如下所示:

  

  1. package demo;
  2. public aspect HelloAspect {
  3.      
  4.     pointcut somePointcut():execution(* Hello.sayHello()); //声明一个切入点
  5.       
  6.     before():somePointcut(){    //切入点前通知
  7.         
  8.         System.out.println("要准备说Hello了...");
  9.      
  10.     }
  11.       after():somePointcut(){    //切入点后通知
  12.           System.out.println("Hello已经说完!");
  13.       }
  14.  }

   注意这个文件的后缀不是.java了,而是.aj,这个文件将被AspectJ的编译器来编译成.class文件

   在Hello上点右键,使用【Run As】->【Java Application】运行Hello,即会看到程序输出结果

  1. 要准备说Hello了...
  2. Hello YangFan!
  3. Hello已经说完!

   这个小例子就算完成了,很简单。

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值