aop从概念到使用

    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指定优先级。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容