AOP与AspectJ入门指南
1. AOP概述
面向切面编程(AOP)通过在给定语言中实现一系列主要关注点来完成。这些横切关注点通过面向切面的语言添加到系统中。使用面向切面语言开发的支持代码用于基于常见的AOP术语实现任何横切关注点,并且必须织入到主要应用程序中。在大多数实现中,支持代码与主要应用程序使用相同的语言编写,AspectJ就是这种情况。
1.1 AOP语言的目标
AOP语言的主要目标是关注点分离。应用程序使用最能满足应用程序和开发人员需求的语言编写,如Java、C++、C#、Visual Basic甚至Cobol。在所有这些语言中,编译器将编写的语言语法转换为机器可以执行的格式。对于Java或.NET,语言语法被转换为字节码,然后由运行时环境执行。
1.2 AOP开发过程
在应用程序开发过程中,传统开发方式(无论是面向对象还是其他方式)往往会产生纠缠的代码。而使用AOP时,主要关注点使用适合应用程序的语言实现,横切关注点则在面向切面的语言中实现。只要为横切编写的代码可以与主要应用程序结合以产生完全可执行的系统,使用何种语言类型进行实现并不重要。任何期望实现关注点的语言都必须有规范和实现。
1.3 AOP语言规范
AOP语言必须能够表示以下主要组件,以便开发横切代码:
- 连接点(Join Points) :是主代码中一个明确定义的位置,关注点将在此处横切应用程序。连接点可以是方法调用、构造函数调用、异常处理程序或程序执行中的其他点。例如: public String DBTrans.updateTables(Str