AOP术语(浅显理解)

AOP术语(通俗理解)

AOP有以下几个术语:

Aspect

Advice

PointCut

JoinPoint

Target

Weave

需要的功能我们抽取出来了 ( 就是说得到切面 Aspect 了 ) ,之后就得去设计具体的方法了(比如需要验证,那我们就写一个验证方法呗)。此时 Advice 就应运而生了,我们在具体的 Aspect 类中去设计具体的方法(也是设计 Advice ,现在应该明白 Advice 的大概了吧其实它就是一个方法 。只是 Spring 给它取名曰:通知)

 

比如我要写一个用验证的安全类 Security (负责所有的验证功能) , 当中有个方法叫 checkSecurity(), 在调用其他方法之前调用它那它就成了前置通知( before 的概念有了吗?),之后调用就是后置通知( after )异常时调用就成( Throws 通知)

 

通知设计完之后我们需要调用啊,可是不是所有的方法都需要这一方法(如果不管三七二十一所有方法通过这横切面就需要调用,那效率何在?这不比收费站,你过就得给钱啊。呵呵 有车的朋友应该感受比较深刻),这时就需要进行判断了。判断的依据就是 Pointcut ,比如我只需要对方法名称开头为 add 的方法调用,那此时的 Pointcut 或许就定义为 add* 了。这下该明白什么是 PointCut 了吧,他就是一套表达式,常用的就支持正则表达式 通过他来进行方法的筛选,类似过滤器。

 

通知我们设计好了,也进行了筛选了现在就是将刷选的通添加到我的 Target Object 了(这一步 Spring 是通过代理实现的)。这个添加的过程就是所谓的 Weave , Spring 给了个很酷的名字 “ 织入 ” 。而 Target Object (目标对象)就是需要调用通知的那个类(暂且说类吧,形象点),而 Target Object 中那个可以触发通知的方法就是所谓的 JoinPoint

看一位大哥这样的理解,小弟也感悟了不少,就此借来给大家分享。