Spring-AOP
Spring-AOP 1. AOP 基本概念 显示中有一些内容并不是面向对象技术(OOP)可以解决的,比如事务处理。在 JDBC 代码中,最繁琐的问题就是无穷无尽的 try ... catch ... finally ... 语句 和 数据库资源关闭 的问题,而且代码会存在大量的重复,而你又不能不写。 一个正常执行的 SQL 的逻辑步骤如下: 打开通过数据库连接池获得数据库链接资源,并做一定的设置工作。 执行对应的 SQL 语句(通常是增删改),对数据进行操作。 如果 SQL 执行过程中发生异常,回滚事务。 如果 SQL 执行过程中没有发生异常,最后提交事物。 到最后的阶段,需要关闭一些连接资源。 参看上述流程,你会发现无论是执行什么具体的 SQL,流程都是一样的!即, 到了特定时刻一定会执行某个特定操作 ,并不因 SQL 的不同而不同 ! 在 OOP 中,模块化单元是『类』(Class),而在 AOP 中,模块化的单元是『 切面』(Aspect)。 AOP 最早由 AOP 联盟的组织提出的,并制定了一套规范。Spring AOP 遵守 AOP 联盟的规范。 Spring 的 AOP 的底层用到两种代理机制: JDK 动态代理 如果目标类遵循某个接口,Spring AOP 底层采用 JDK 方案生成代理对象 Cglib 动态代理 如果目标类不遵循任何接口,Spring AOP