XJL:AOP

下面是 AOP 的一些基本概念
aspect (方面):实现了 cross-cutting 功能,是针对方面的模块,是为题的不同关注点,我们可以将这些方面通过某种方式加入到核心关注点中。
jointpoint (连接点):连接点是方面插入应用程序的地方,该点能被方法调用。
advice (通知): advice 是我们关注点功能的实现,它通知程序新的行为。如在权限处理中, permission advice 包括权限控制的实现代码。
pointcut (切入点): pointcut 可以指定把哪些 advice 应用到 jointpoint 上去、如何应用上去以及应用的位置。
AOP 包括三个开发步骤:
关注点分解:分解需求提取出横切关注点和一般关注点。把核心模块级关注点和系统级的横切关注点分离开来。就前面所提到的网上购物系统来说,可以分解出四个关注点:核心的订单处理、权限、日志和事务。
关注点实现:各自独立的实现这些关注点。
关注点的重新组合:在这一步里,通过创建一个模块单元来指定关注点重组的规则。重组过程被称为织入( Weaving )。以前边的网上购物系统来说,可以通过某种方式指定每个操作结束后需要记录日志、操作开始前要验证是否有权限、操作失败要事务回滚。
 
 
下面是 AspectJ 实现日志记录的一个例子:
public aspect AutoLog
{ 
pointcut publicMethods() :
execution(public * org.apache.cactus..*(..));
pointcut logObjectCalls() :
execution(* Logger.*(..));
pointcut loggableCalls() :
publicMethods() && ! logObjectCalls();
before() : loggableCalls()
{
Logger.entry(thisJoinPoint.getSignature().toString());
}
after() : loggableCalls()
{
Logger.exit(thisJoinPoint.getSignature().toString());
}
}
可以看到,这里边有很多 Java 中没有的关键字,比如 aspect pointcut 等。这些关键字都是 AspectJ 提供的,使用这些扩展我们可以用 AspectJ Java 类增加字段及方法,甚至使 Java 支持多继承。
 
 
Spring 没有自己进行 AOP 技术的实现 , 它的主要实现技术来自于 AOP 联盟( AOPAlliance )。
Spring AOP 中的术语不像 AspectJ 那样多,因而也更容易理解和学习。只要理解三个概念就可以, advice pointcut advisor
advice 是要向别的模块内部不同的地方注入的代码
pointcut 定义了需要注入 advice 的位置,通常是某个特定的类的一个 public 方法
advisor pointcut advice 的装配器,是将 advice 注入主程序中预定义位置的代码

本文出自 “CowNew开源团队” 博客,转载请与作者联系!

你可能感兴趣的:(AOP,职场,休闲,xjl)