Aop作为OOP的扩展,作为函数式编程的扩展,这里,使用AOP方法复用其中的共用模块。
其中的共用概念:
Aspect(切面): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。Joint point(连接点):表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
Pointcut(切点):表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
Advice(增强):Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
Target(目标对象):织入 Advice 的目标对象.。
Weaving(织入):将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程
个人使用理解:
1:一般的,可以使用pointCut指定切点,在后面的advice中调用。当然也可以在advice中指明切的对象。join point的声明方式。
2:调用Advice进行实现对方法的操作。比较特殊的是around。它可以实现对返回数组的修改。对于@Around这个advice,不管它有没有返回值,但是在方法内部,必须要调用一下 pjp.proceed();Advice的调用顺序为:
在一个方法只被一个aspect类拦截时,aspect类内部的 advice 将按照以下的顺序进行执行:
正常情况,即没有异常AfterThrowning
捕获异常情况,即存在异常AfterThrowning捕获
多个Aspect拦截一个方法,使用@Order指定优先级。










网友评论