Spring -- AOP 基础应用

2021-02-18  本文已影响0人  Travis_Wu

一、AOP 相关术语

名词 解释
Joinpoint(连接点) 它指的是那些可以用于把增强代码加入到业务主线中的点,这些点指的就是方法,在方法执行的前后通过动态代理技术加入增强的代码,在Spring框架AOP思想的技术实现中,也只支持方法类型的连接点
Pointcut(切入点) 它指的是那些已经把增强代码加入到业务主线进来之后的连接点
Advice(通 知 / 增强) 它指的是切面类中用于提供增强功能的方法,并且不同的方法增强的时机是不⼀样的,比如:
开启事务肯定要在业务方法执行之前执行
提交事务要在业务方发正常执行之后执行
回滚事务要在业务方法执行产生异常之后执行
那么这些就是通知的类型,其分类有:前置通知 后置通知 异常通知 最终通知 环绕通知
Target(目标对象) 它指的是代理的目标对象,即被代理对象
Proxy(代理) 它指的是⼀个类被AOP织入增强后,产生的代理类,即代理对象
Weaving(织入) 它指的是把增强应用到目标对象来创建新的代理对象的过程,Spring采用动态代理织入,而AspectJ采用编译期织入和类装载期织入
Aspect(切面) 它指定是增强的代码所关注的方面,把这些相关的增强代码定义到⼀个类中,这个类就是切面类。例如,事务切面,它里面定义的方法就是和事务相关的,像开启事务,提交事务,回滚事务等等,不会定义其他与事务无关的方法

二、Spring 声明式事务的支持

2.1 事务的四大特性

2.2 事务的隔离级别

不考虑隔离级别,会出现以下情况:(以下情况全是错误的),也即为隔离级别在解决事务并发问题

数据库共定义了四种隔离级别

注意:级别依次升高,效率依次降低

2.3 事务的传播行为

传播行为 说明
PROPAGATION_REQUIRED 如果当前没有事务,就新建⼀个事务,如果已经存在⼀个事务中,加入到这个事务中,这是最常见的选择
PROPAGATION_REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起
PROPAGATION_SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行
PROPAGATION_NOT_SUPPORTED 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起
PROPAGATION_MANDATORY 使用当前的事务,如果当前没有事务,就抛出异常
PROPAGATION_NEVER 以非事务方式执行,如果当前存在事务,则抛出异常
PROPAGATION_NESTED 如果当前存在事务,则在嵌套事务内执行,如果当前没有事务,则执行与 PROPAGATION_REQUIRED 类似的操作
上一篇 下一篇

猜你喜欢

热点阅读