AoP面向切面编程

AoP

AoP:面向切面编程,对业务逻辑的各个部分进行隔离,使得业务逻辑的各个部分之间的耦合度降低。
通俗来讲:不修改源码的方式,在主干功能里添加新功能。
例如:
在这里插入图片描述

1、AoP底层使用动态代理

有两种动态代理情况:

(1)有接口,使用JDK动态代理

创建接口实现类的代理对象,增强类的方法
在这里插入图片描述

(2)没有接口情况,使用CGLIB动态代理

创建子类的代理对象,增强类的方法
在这里插入图片描述

2、AoP(JDK的动态代理)

JDK的动态代理:使用Proxy类的方法newProxyInstance方法来创建代理对象
在这里插入图片描述
第一个参数:类加载器;
第二个参数:增强方法所在的类所实现的接口,支持多个接口
第三个参数:实现InvocationHandler接口,创建代理对象,写增强的方法

代码实现:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
spring5对动态代理做了封装

3、AoP术语:

(1)连接点:可以被增强的方法
(2)切入点:实际被增强的方法
(3)通知(增强):实际增强的逻辑部分
		通知的类型:
				前置通知
				后置通知(有异常就不执行)
				环绕通知
				异常通知
				最终通知(有异常仍然执行)
		
(4)切面:是动作,把通知应用到切入点过程
				(把增强的逻辑部分应用到需要被增强的方法处)

Spring 框架一般是基于ASpectJ实现AoP操作
ASpectJ不是Spring的组成部分,是独立的AoP框架,一般把AspectJ和Spring框架一起使用,进行AoP操作

基于ASpectJ实现AoP操作的方式:

1)基于xml配置文件方式
2)基于注解方式

切入点表达式
切入点:实际被增强的方法
切入点表达式的作用:用来知道是对哪个类的哪个方法进行增强
在这里插入图片描述

4、AoP操作(AspectJ配置文件)

注意:增强类中,不同的方法代表不同的增强逻辑
在这里插入图片描述

3、创建对象,并进行通知的配置
1)开启注解扫描
2)使用注解创建对象
3)在配置文件中开启生成代理对象
4)在增强类上添加注解@Aspect,便可生成代理对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
额外:

把相同的切入点进行抽取:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

使用完全注解开发:
创建配置类,不需要创建xml配置文件
在这里插入图片描述

5、AOP操作(AspectJ配置文件)

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值