AOP(基于注解对AspectJ操作)

一.AOP底层使用动态代理
(1)有两种情况动态代理
第一种有接口情况,使用JDK动态代理
第二种没有接口情况,使用CGLIB动态代理
1、使用JDK动态代理,使用Proxy类里面的方法创建代理对象
(1)创建接口,定义方法
在这里插入图片描述
(2)创建接口实现类,实现方法
在这里插入图片描述

(3)使用Proxy类创建接口代理对象

在这里插入图片描述
在这里插入图片描述
二.AOP术语
1、连接点
类里面哪些方法可以被增强,这些方法称为连接点
2、切入点
实际被真正增强的方法,称为切入点
3、通知(增强)
(1)实际增强的逻辑部分称为通知(增强)
(2)通知有多钟类型
*前置通知
*后置通知
*环绕通知
*异常通知
*最终通知 类似于finally
4、切面是动作
(1)把通知应用到切入点过程
三.AOP操作
1、Spring框架一般都是基于AspectJ实现AOP操作
(1)什么是AspectJ?
AspectJ不是Spring组成部分,独立AOP框架,一般把AspectJ和Spring框架一起使用,进行AOP操作

2、基于Aspect实现AOP操作
(1)基于xml配置文件实现
(2)基于注解方式实现(使用)
3、在项目工程里面引入AOP相关依赖
在这里插入图片描述

4、切入点表达式
(1)切入点表达式作用:知道对哪个类里面的哪个方法进行增强
(2)语法结构:
execution([权限修饰符][返回类型][类全路径][方法名称] ([参数列表]))

举例1:对dwd.com.spring5.dao.BookDao里面的add方法增强
execution(* dwd.com.spring5.dao.BookDao.add(…))
*代表任意修饰符,返回类型可以不写,(参数)

举例2:对dwd.com.spring5.dao.BookDao里面的所有方法增强
execution(* dwd.com.spring5.dao.BookDao.*(…))

举例3:对dwd.com.spring5.dao包里面的所有类里面所有方法增强
execution(* dwd.com.spring5..(…))
四.基于注解对AspectJ操作
1、创建类,在类里面定义方法
在这里插入图片描述

2、创建增强类(编写增强逻辑)
前置通知就是add方法之前执行
在这里插入图片描述

3、进行通知的配置
(1)在spring配置文件中,开启注解扫描
可以使用xml配置,也可以写配置类(全注解开发)
引入两个名称空间context和aop
在这里插入图片描述
(2) 使用注解创建User和 UserProxy对象
在这里插入图片描述
在这里插入图片描述

(3)在增强类上面添加注解@Aspect
在这里插入图片描述
(4) 在spring配置文件中开启生成代理对象
在这里插入图片描述
4、配置不同类型的通知
(1)在增强类的里面,在作为通知方法上面添加通知类型注解,使用切入点表达式配置
在这里插入图片描述
测试在这里插入图片描述
在这里插入图片描述
几种通知在这里插入图片描述
在这里插入图片描述
异常通知在这里插入图片描述
在这里插入图片描述

5、相同切入点的抽取
在这里插入图片描述
在这里插入图片描述
6、有多个增强类多同一个方法进行增强,设置增强类优先级

(1)在增强类上面添加注解@Order(数字类型值),数字类型值越小优先级越高在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值