一、Spring AOP的基础知识
-
AOP为Aspect Oriented Programming的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
-
AOP的作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强。优势:减少重复代码,提高开发效率,并且便于维护
-
底层:AOP的底层是通过Spring提供的的动态代理技术实现的。在运行期间,Spring通过动态代理技术动态的生成代理对象,代理对象方法执行时进行增强功能的介入,在去调用目标对象的方法,从而完成功能的增强。
-
AOP的使用:(1)xml配置文件方式 (2)注解方式 一般使用注解方式
-
AOP相关术语:
-
Target(目标对象):代理的目标对象
-
Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类
-
Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring,,这些点指的是方法,因为spring只支持方法类型的连接点
-
Pointcut(切入点):所谓切入点是指我们要对哪些Joinpoint进行拦截的定义
-
Advice(通知/增强):所谓通知是指拦截Joinpoint之后所要做的事情就是通知
-
Aspect(切面):是切入点和通知(引介)的结合
-
Weaving (织入):是指把增强应用到目标对象来创建新的代理对象的过程。spring采用动态代理织入,而AspectJ采用编译期织入和类装载期织入
二、Spring事务管理的基础知识
-
事务的概念:事务是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合。
-
spring事务API介绍:(1)PlatformTransactionManager(事务平台管理器)是一个接口,定义了获取事务【getTransaction】、提交事务【commit】、回滚事务【rollback】的接口(2)TransactionDefinition【事务定义信息】是一个接口,定义了事务隔离级别、事务传播行为、事务超时时间、事务是否只读
-
事务的ACID原则:事务具有4个基本特性:原子性、一致性、隔离性、持久性。
-
原子性(Atomicity):
一个事务已经是一个不可再分割的工作单位。事务中的全部操作要么都做;要么都不做
-
一致性(Consistency):
事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定。
-
隔离性(Isolation):
事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。
-
持久性(Durability):
一个事务一旦提交,它对数据库中数据的改变会永久存储起来。其他操作不会对它产生影响
事务的管理方式
-
编程式事务管理 :编程式事务管理是通过编写代码实现的事务管理。可以根据需求规定事务从哪里开始,到哪里结束,拥有很高的灵活性。但是这种方式,会使业务代码与事务规则高度耦合,难以维护,因此我们很少使用这种方式对事务进行管理。
-
声明式事务管理: 采用声明的方式来处理事务,可以通过 2 种方式实现,分别是 XML和注解方式。Spring 在进行声明式事务管理时,底层使用了 AOP 。事务管理不侵入开发的组件。
四、总结
总结:Spring AOP是一种面向切面编程的技术,它可以在不修改原有代码的情况下,动态地将切面逻辑织入到应用程序中,从而实现横切关注点的复用和分离。而事务管理则是保证数据一致性和完整性的重要手段,它可以确保在一个事务中的所有操作要么全部成功,要么全部失败回滚。事务管理广泛应用于以下场景:(1)银行转账:确保从一个账户转出金额后,目标账户能够成功收到金额。(2)订单处理:确保订单的创建、支付和发货等操作在同一个事务中完成,防止数据不一致的情况发生。(3)用户认证:在用户登录和权限验证过程中,确保整个操作都在同一个事务中执行,防止出现超时或其他异常导致用户无法正常登录的情况。