Aspect-Oriented 编程(AOP)通过提供另一种思考程序结构的方式来补充 Object-Oriented 编程(OOP)。

Aspect-Oriented 编程(AOP)通过提供另一种思考程序结构的方式来补充 Object-Oriented 编程(OOP)。
在这里插入图片描述

增强类型(advice)
* 建议之前( Before advice):在连接点之前执行但不能阻止执行流程进入连接点的增强(除非它抛出 exception)。
* 返回建议后( After returning advice):在连接点正常完成后执行的建议:对于 example,如果方法返回而不抛出 exception。
* 抛出建议后( After throwing advice):如果方法通过抛出 exception 退出,则执行建议。
* 在(最终)建议之后( After (finally) advice):无论连接点退出的方式(正常或异常 return),都要执行建议。
* 围绕建议( Around advice):围绕连接点的建议,例如方法调用。这是最有力的建议。 around 通知可以在方法调用之前和之后执行自定义行为。它还负责选择是继续加入点还是通过返回自己的 return value 或抛出 exception 来快速建议的方法执行。

关于代理:Spring AOP 默认使用 AOP 代理的标准 JDK 动态代理。这使得任何接口(或接口集)都可以被代理。Spring AOP 也可以使用 CGLIB 代理。这对代理 classes 而不是接口是必要的(最后实现接口)。如果 business object 没有实现接口,则默认使用 CGLIB。

切入点表达式类型

* 

execution(执行) - 对于匹配方法执行连接点,这是在使用 Spring AOP 时将使用的主要切入点指示符
*
within - 限制匹配某些类型中的连接点(只是在使用 Spring AOP 时执行在匹配类型中声明的方法)
*
this - 限制匹配连接点(使用 Spring AOP 时执行方法)bean reference(Spring AOP proxy)是给定类型的实例
*
target - 限制匹配到连接点(使用 Spring AOP 时执行方法),其中目标 object(application object 被代理)是给定类型的实例
*
args - 限制匹配连接点(使用 Spring AOP 时执行方法),其中 arguments 是给定类型的实例
*
@target - 限制匹配连接点(使用 Spring AOP 时执行方法),其中执行 object 的 class 具有给定类型的 annotation
*
@args - 限制匹配连接点(使用 Spring AOP 时执行方法),其中传递的实际 arguments 的运行时类型具有给定 type(s 的注释
*
@within - 限制匹配以在具有给定 annotation 的类型中连接点(使用 Spring AOP 时,使用给定 annotation 在类型中声明的方法的执行)
*
@annotation - 限制匹配到连接点的主题,其中连接点的主题(在 Spring AOP 中执行的方法)具有给定的 annotation

注意:.*表示所有的接口 *.*表示所有的方法 …子包 一定注意开头后面一定要加空格
记录每个方法执行时的参数 非around advice 用JoinPoint around advice用ProceedingJointPoint (一定要加在第一个方法里)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值