AOP 笔记

AOP

作用:在不惊动原始设计的基础上进行功能增强。

无侵入式编程
连接点:程序执行的任意位置,SpringAOP中,理解为方法的执行。
在这里插入图片描述
切入点:匹配连接点的式子,要追加功能的方法
在这里插入图片描述

通知(写在通知类中):共性功能,在切入点执行的操作。

  • SpringAOP中,最终以方法的形式呈现
    通知类:定义通知的类
    切面(Aspect):描述通知的共性功能和切入点的关系
步骤

在这里插入图片描述
代码实现步骤:
1、导入相关坐标
2、定义dao接口与实现类
3、定义通知类
4、@Pointcut注解定义切入点
在这里插入图片描述
5、@Before等注解绑定切入点与通知关系
6、@Component @Aspect告诉程序通知类用来AOP
7、@EnaleAspectJAutoProxy : 告诉程序注解开发AOP;开启功能

AOP工作流程

  • Spring容器启动
  • 读取所有切面配置中的切入点,只读取已经配置了(建立联系的)切入电
  • 初始化bean,判断bean对应的类中的方法是否匹配到任意切点
  • 匹配失败,创建对象
  • 匹配成功,创建目标对象的代理对象 (代理模式实现)
  • 获取bean执行方法
    在这里插入图片描述
    tips:AOP重写了toString
切入点表达式
  • 可以使用通配符
    在这里插入图片描述
AOP编码技巧
  • 安装AOP标准规范开发
  • 描述切入点描述接口
  • 在这里插入图片描述
  • 返回值对于增删改使用精确类型加速匹配;查询类使用*通配快速匹配
  • 包名书写避免…匹配,常用*做单个包描述匹配,或精确匹配
  • 接口名/类名书写名称与模块相关的采用*匹配,eg.UserService书写成*Service,绑定业务层接口
  • 方法名书写以动词进行精准匹配,名词采用匹配。eg. getById书写成getBy, selectAll书写成selectAll
  • 不使用异常作为匹配规则
AOP通知类型
  • 前置通知
  • 后置通知
  • 环绕通知
  • 返回后通知
  • 抛出异常后通知
环绕通知
  • @Around
    在这里插入图片描述
    有返回值情形
    在这里插入图片描述
    在这里插入图片描述

AOP通知获取数据

  • 获取参数
  • 获取返回值
  • 获取异常
    在这里插入图片描述

Spring事务

  • 事务管理员:发起事务方,在Spring中,通常指代业务层开启事务的方法。
  • 事务协调员:加入事务方,在Spring中,通常指代数据层方法,也可以是业务层方法。
rollbackFor:设置事务回滚异常
好的,关于Spring AOP笔记和源码讲解,我可以给你简单介绍一下。 Spring AOP是Spring框架中的一个重要模块,提供了基于代理的AOP实现。AOP(Aspect Oriented Programming)面向切面编程,是一种编程思想,它通过将横切关注点与业务逻辑分离,使得系统的关注点更加清晰,代码更加简洁易懂,同时也提高了代码的可维护性和可扩展性。 在Spring AOP中,切面(Aspect)是一个类,它包含了通知(Advice)和切点(Pointcut)。通知是在切点上执行的操作,例如在方法执行前或执行后执行一些额外的逻辑。而切点则是一个表达式,用于匹配目标对象中的方法,从而确定哪些方法会被通知所影响。 Spring AOP提供了四种通知类型,分别是: 1. 前置通知(Before advice):在目标方法执行之前执行。 2. 后置通知(After returning advice):在目标方法执行之后执行,在目标方法没有抛出异常的情况下。 3. 异常通知(After throwing advice):在目标方法抛出异常后执行。 4. 最终通知(After advice):无论目标方法是否抛出异常,最终通知都会执行。 除了通知之外,Spring AOP还提供了环绕通知(Around advice),它可以在目标方法执行前和执行后执行一些额外的逻辑,并且可以控制目标方法的执行。 在Spring AOP中,代理是通过JDK动态代理或者CGLIB字节码生成技术生成的。如果目标对象实现了接口,则使用JDK动态代理实现代理;如果目标对象没有实现接口,则使用CGLIB字节码生成技术实现代理。 在Spring AOP中,通知和切点都可以使用注解的方式来声明。例如,使用@Aspect注解声明一个切面类,使用@Before、@After、@AfterReturning、@AfterThrowing和@Around注解声明通知方法,使用@Pointcut注解声明切点表达式。 关于Spring AOP源码讲解,它的实现主要涉及到以下几个类: 1. AdvisedSupport类:封装了目标对象、切面和通知等信息。 2. ProxyFactory类:用于生成代理对象的工厂类。 3. AopProxy接口:代理对象的接口。 4. JdkDynamicAopProxy和CglibAopProxy类:实现了AopProxy接口,分别用于基于JDK动态代理和CGLIB字节码生成技术的代理对象。 以上是Spring AOP笔记和简单源码讲解,希望能对你有所帮助。如果有什么不清楚的地方,可以继续问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值