Spring AOP和事务全面学习

Spring AOP

AOP是什么

面向切面面编程,是通过预编译方式和运行期动态代理实现程序功能得统一维护的技术。

AOP作用和优势

作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强

优势:减少重复代码,提高开发效率,便于维护。

底层:实际上,AOP的底层是通过Spring提供的的动态代理技术实现的。在运行期间,Spring通过动态代理技术动态的生成代理对象,代理对象方法执行时进行增强功能的介入,在去调用目标对象的方法,从而完成功能的增强。

AOP中的名词 

连接点 :JoinPoint,所有业务方法都是连接点。不管有没有添加额外功能。所谓连接点是指那些                 被拦截到的点。在spring,,这些点指的是方法,因为spring只支持方法类型的连接点

切入点 :PointCut,切入点是指我们要对哪些Joinpoint进行拦截的定义 。

通知 :Advice,所谓通知是指拦截Joinpoint之后所要做的事情就是通知 。

切面 :Aspect,将切入点和通知结合。

AOP的开发

  1. 连接点 :编写核心业务代码(目标类的目标方法)
  2. 通知 :编写切面类,切面类中有通知(增强功能方法)
  3. 组装切面 :在配置文件中,配置织入关系,即将哪些通知与哪些连接点进行结合

五种通知形式

Before advice :前置通知,目标方法前执行,无论目标方法是否遇到异常都执行
After returning advice:后置通知,目标方法执行后执行,前提是目标方法没有遇到异常,遇到异常则不执行
After throwing advice:异常通知,顾名思义,在目标方法抛出异常时执行
After finally advice:最终通知,在目标方法执行后执行,无视是否异常
Around advice:环绕通知:最强大的通知类型,可以控制目标方法的执行(通过调用ProceedingJoinPoint.proceed() 执行目标方法),可以在目标执行全过程中执行。

事务

事务的概念

事务是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合。

事务的ACID原则

原子性(Atomicity):

一个事务已经是一个不可再分割的工作单位。事务中的全部操作要么都做;要么都不做

一致性(Consistency):

事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定。

隔离性(Isolation):

事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。

持久性(Durability):

一个事务一旦提交,它对数据库中数据的改变会永久存储起来。其他操作不会对它产生影响

事务的隔离级别

Spring事务隔离级别

(1)DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。(Mysql 默认repeatable_read, Oracle 默认read_commited)
(2)未提交读(read_uncommited) 
(3)已提交读 (read_commited)
(4)可重复读 (repeatable_read)
(5)串行化的 (serializable)

不考虑隔离性引发安全性问题:

脏读 :在一个事务中读取到了另外一个事务修改的【未提交的数据】,而导致多次读取同一个数据返回的结果不一致 (必须要解决的)

不可重复读 : 在一个事务中读取到了另外一个事务修改的【已提交的数据】,而导致多次读取同一个数据返回的结果不一致

幻读(虚读): 一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了。再后来的查询中,第一个事务就会发现有些原来没有的记录

事务的使用方法

1.编程式事务管理:通过TransactionTemplate手动管理事务,在实际应用中很少使用

2.声明式事务管理(需要使用xml配置):通过AOP实现事务管理,代码侵入性小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值