2011年2月20日星期日

关于对AOP的理解

  在AOP(面向切面的编程)里面,其核心在于对某一类特定的关注点附加特定的处理。从这句话我们可以分析出来,AOP应该有下面的东西:
1. Advice (通知):处理部分。定义处理的具体手段,比如在调用方法前统计方法调用次数,比如在调用方法后记录调用日志等,都是具体是增强手段。很常见的Advice就是事务控制,调用方法后,视情况决定是提交事务还是回滚事务。
2. Pointcut(关注点):定义哪一些方法符合我们要处理的条件,其实就是一个条件定义,符合这个条件定义的,就是我们要关注的对象。比如要为所有以save开头的方法附加事务。那么这个关注点的定义就是 “save*”
3. 对二者的组合。 定义哪些被关注的对象应该如何处理。
设想一下情况:
Advice:事务控制、调用次数记录、异常次数记录
Pointcut: 以save开头的方法、以query开头的方法
我们可以组合出6中AOP的使用方法:
1. 给save开头的方法增加事务控制
2. 给save开头的方法记录调用次数
3. 给save开头的方法记录异常次数
4. 给query开头的方法增加事务控制
5. 给query开头的方法记录调用次数
6. 给query开头的方法记录异常次数
具体到SpringAOP中,我们看看是如何进行配置的。