事务,AOP

一.事务

1.事务介绍

事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所以的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

2.事务的操作

start transaction /begin;   开启事务

commit;   提交事务

rollback;   回滚事务

3.事务的四大特性

原子性:事务时不可分割的最小单元,要么全部成功,要么全部失败

一致性:事务完成时,必须使所以数据都保持一致状态

隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行

持久性:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

4.注解:

注解:@Transactional,

(rollbackFor属性用于控制出现何种异常类型,回滚事务)

(propagation属性为事务传播行为,指的是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制)

位置:业务(service)层的方法上,类上,接口上

作用:将当前方法交给spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常,回滚事务

二.AOP

AOP基础

1.介绍:

Aspect Oriented Programming(面向切面编程,面向方面编程),其实就是面向特定方法编程

2.实现

动态代理是面向切面编程最主流的实现。而SpringAOP是Spring框架的高级技术,指在管理bean对象的过程中,主要通过底层的动态代理机制,对特定的方法进行编程。

3.场景

记录操作日志(重要)    权限控制      事务管理

4.优势

代码无侵入    减少重复代码   提高开发效率   维护方便

5.AOP核心概念

连接点:JoinPoint,可以被AOP控制的方法(暗含方法执行时的相关信息)

通知:Advice,指哪些重复的逻辑,也就是共性功能(最终体现为一个方法)

切入点:PointCut,匹配连接点的条件,通知仅会在切入点方法执行时被应用

切面:Aspect,描述通知与切入点的对应关系(通知+切入点)

目标对象:Target,通知所应用的对象

AOP进阶

1.通知类型

@Around:环绕通知,此注解标注的通知方法在目标方法前,后都被执行

@Before:前置通知,此注解标注的通知方法在目标方法前被执行

@After:后置方法,此注解标注的通知方法在目标方法后被执行,无论是否有异常都会执行

@AfterReturning:返回后通知,此注解标注的通知方法在目标方法后被执行,有异常不会执行

@AfterThrowing:异常后通知,此注解标注的通知方法发生异常后执行

@Pointcut:将公共的切入点表达式抽取出来

注意事项:

@Around环绕通知需自己调用  ProceedingJointPoint.proceed()  来让原始方法执行,其他通知不需要考虑目标方法执行

@Around环绕通知方法的返回值,必须指定和原始方法一样的返回值

2.执行顺序

不同切面类中,默认按照切面类的类名字母排序:

                                                        目标方法前的通知方法:字母靠前的先执行

                                                        目标方法后的通知方法:字母靠前的后执行

用@Order加切面类上控制顺序:

                                                        目标方法前的通知方法:数字小的先执行

                                                        目标方法后的通知方法:数字小的后执行

3.切入点表达式

1.execution

execution 主要根据方法的返回值,包名,类名,方法名,方法参数等信息来匹配,语法为:
execution(访问修饰符?返回值 包名.类名.?方法名(方法参数)throws 异常?)【带?可省略】

2.@annotation

4.连接点

在Spring中用JoinPoint抽象了连接点,用它可以获得方法执行时的相关信息,如目标类名,方法名,方法参数等

对于@Around通知,获得连接点信息只能使用  ProceddingJoinPoint

对于其他四种通知,获取连接点信息只能使用JointPoint,他是ProceddingJoinPoint的父类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值