AOP的用途-动态代理
AOP的用途-动态代理
Spring提供约定,我们只需要使用约定就行了。
AOP最为典型的应用就是对数据库事务的管控。
在获取数据库事务连接、操控事务和释放数据库事务连接的过程中,都需要使用大量的try...catch...finally...语句进行操作,这显然存在大量重复的工作。是否可以替换这些没有必要重复的工作呢?答案是肯定的,因为这里存在着一个默认的运行SQL语句的流程,我们先描述一下这个流程。
(1)获取数据库事务连接,对其属性进行设置。
(2)运行SQL语句。
(3)如果没有发生异常,则提交事务;如果发生异
常,则回滚事务。
(4)释放数据库事务连接。
从图4-6可以看到,数据库事务连接的获取和释放,以及事务的提交和回滚等流程中的步骤都由框架提供默认的实现。换句话说,开发者不需要完成它们,而只需要完成运行SQL语句这一步,然后将其织入约定的流

那么Spring是怎么做到的呢?大致的流程是:Spring帮开发者把insertUser()方法织入与图4-6类似的流程中,而数据库事务连接的获取和释放以及事务管理都由流程默认实现,也就是约定的流程可以将大量重复的内容抽取出来,然后给予默认的实现。在Spring中,数据库事务连接的获取和释放、事务的提交和回滚,都有默认的实现,然后被织入AOP流程中,在进行数据库操作时,你再也不会看到那些让人厌恶的try...catch...finally...语句。

浙公网安备 33010602011771号