目录
上篇文章分析了Spring IoC,这是设计用来管理Bean,就是管理Java面向对象的(OOP)。
在现实生活中,有些场景是面向对象没办法处理的。比如一个具有多个流程的事件,某个流程需要之前的流程满足一定的条件,如果不满足的话,就需要对其之前的流程进行回滚。
1、概念
AoP(Aspect Oriented Programming),面向切面编程,将事物的流程抽象为切面,通过AoP去管理在切面上的某些对象之间的协作。
2、为什么需要面向切面?
前文也分析了,有些场景面向对象是没法解决的。具体实例可以参考《javaEE轻量级框架》。
3、具体怎么操作的?
AoP常用于数据库事务编程。在操作A之后,不知道下一步的操作B是否会成功,如果下一步B失败,就会使用数据库事务的回滚功能去回滚事务,使得操作A的更新作废,保持数据一致性。
怎么触发回滚?: 在SPringle的事务管理中只要收到异常信息,就会触发回滚事务。
Spring将回滚的数据库代码屏蔽,用户只需要关注业务代码就行了,不需要实现具体的回滚逻辑代码。
4、理解参考
- 关于切面、连接点、切点、织入:
在AOP中切面就是与业务逻辑独立,但又垂直存在于业务逻辑的代码结构中的通用功能组合;切面与业务逻辑相交的点就是切点;连接点就是把业务逻辑离散化后的关键节点;切点属于连接点,是连接点的子集;Advice(增强)就是切面在切点上要执行的功能增加的具体操作;在切点上可以把要完成增强操作的目标对象(Target)连接到切面里,这个连接的方式就叫织入。
- 关于逻辑