面向切面编程(AOP)简介:Spring Aop是Spring框架的重要组成部分,面向切面编程(AOP)是以另一个角度来考虑程序结构,通过分析程序结构的关注点来完善面向对象编程(OOP)。
AOP术语:连接点(Aspect)、通知(Advice)、切入点(Pointcut)、引入(Introduction)、目标对象(Target Object)、AOP代理(AOP Proxy)、织入(Weaving)、通知类型、前置通知(Before advice)、后置通知(After returning advice)、异常通知(After throwing advice)、最终通知(After(finally)advice)、环绕通知(Around Advice)。
AOP和OOP:AOP其实只是OOP的补充。OOP从横向上区分出一个个的类来,而AOP则从纵向上向对象中加入特定的代码。有了AOP,OOP变得立体了。如果加上时间维度,AOP使OOP由原来的二维变为三维了,由平面变成立体了。从技术上来说,AOP基本上是通过代理机制实现的。
事务的特性:事务有四大特性,简称ACID。
- 原子性:事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。
- 一致性:一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。现实中的数据不应该被破坏。
- 隔离性:可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
- 持久性:一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。
核心接口:事务管理器、JDBC事务、Hibernate事务、Java持久化API事务、Java原生
API事务。
基本事务属性:传播行为、隔离级别、只读、事务超时、回滚规则。
Spring事务的配置方式:编程式事务、声明式事务。
编程式事务是指将事务管理代码嵌入嵌入到业务代码中,来控制事务的提交和回滚。
声明式事务将事务管理代码从业务方法中抽离了出来,以声明式的方式来实现事务管理,对于开发者来说,声明式事务显然比编程式事务更易用、更好用。