Spring的AOP编程

概念

A. Aspect(切面)
比如说事务、权限等,与业务逻辑没有关系的部分

B. joinpoint(连接点)
目标类的目标方法。(由客户端在调用的时候决定)

C. Pointcut(切入点)
所谓切入点是指我们要对那些拦截的方法的定义.
被纳入spring aop中的目标类的方法。

D. Advice(通知)
所谓通知是指拦截到joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)

E. Target(目标对象):
代理的目标对象

F. Weaving(织入)
是指把切面应用到目标对象来创建新的代理对象的过程.切面在指定的连接点织入到目标对象
这里写图片描述

通知根据拦截目标类中的目标方法的位置不一样可以分为:前置通知、后置通知、最终通知、环绕通知、异常通知

Aspect(切面)的理解

这里写图片描述

springAOP的各个概念

这里写图片描述

AOP实现的两种模式

xml形式

配置的主要过程

这里写图片描述

A. 前置通知

在spring配置文件中声明切面
这里写图片描述
在spring配置文件中声明目标类
这里写图片描述

定义切面、切入点、通知
这里写图片描述
这里写图片描述

又例如:
这里写图片描述

这里写图片描述

说明:
1、在切面类中,没有必要实现接口,但方法名称要与<aop:before method=”checkSecurity” 中的checkSecurity一样。
2、checkSecurity方法中通过JoinPoint参数可以获得目标类的目标方法名称、参数值等信息。

切入点表达式解释

这里写图片描述
这里写图片描述


B. 后置通知

1、 没有特殊说明的地方和前置通知是一样的。
2、 在spring配置文件中
这里写图片描述
3、 在拦截器中的方法要和checkSecurity方法一样,有两个参数
JoinPoint point 可以获得目标方法和参数值
Object val 这里的名字要和returning=”val”中保持一致,指的是方法的返回值。
4、 returning=”val”时,通知里可以有返回参数,这个参数只能决定通知里能不能拿到方法的返回值,和客户端没有关系。

5、 在执行目标类的目标方法中遇到异常,则不执行后置通知。

例如:

这里写图片描述

这里写图片描述

C. 异常通知

1、 没有特殊说明的地方和前置通知一样
2、 在spring配置文件中
这里写图片描述

例如:
这里写图片描述

这里写图片描述

其中throwing指定了传递异常的参数名称
3、 在异常通知中(拦截器)中,必须是checkSecurity方法。方法中有两个参数
JoinPoint point 可以获得方法的名称、参数
Throwable ex 利用ex.getMessage()可以获得异常信息

D. 最终通知

1、 没有特殊说明,和前置通知的配置一样。
2、 在spring配置文件里:
这里写图片描述

例如:
这里写图片描述

这里写图片描述

说明:在最终通知中不受异常的影响。也就是说不论目标方法执行的过程中是否抛出异常,最终通知都将执行。

E. 环绕通知

1、 没有特殊说明和前置通知的配置保持一致。
2、 在spring文件中
这里写图片描述
3、 在环绕通知中,方法名称为checkSecurity。参数 类型 为ProceedingJoinPoint。
ProceedingJoinPoint的proceed方法相当于invoke方法,调用目标类的目标方法。ProceedingJoinPoint继承了JoinPoint类
4、 能在方法执行的前后加入额外的代码。
说明:
这里写图片描述
例如:
这里写图片描述

这里写图片描述

异常处理

这里写图片描述

这里写图片描述
这里写图片描述

Aop注解形式

这里写图片描述

A. 前置通知

这里写图片描述
这里写图片描述

注意:@Aspectj是按照类型匹配的。

B. 后置通知

这里写图片描述

这里写图片描述

C. 异常通知

这里写图片描述

这里写图片描述

D. 最终通知

这里写图片描述
这里写图片描述

E. 环绕通知

这里写图片描述

这里写图片描述


例如:
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值