Spring AOP 初探

来源:互联网 发布:淘宝商家联系方式 编辑:程序博客网 时间:2024/05/18 01:43

晚上参阅着Spring手册接触了Spring AOP方面的内容,了解不少,哪会儿模仿着手册中的实例和一些说明自己做了个小例子,涉及到的知识点不是很多,不过很有成就感,分享下也可备初次接触Spring AOP后来者参考。

首先简单陈述下AOP的原理:传统OOP在程序成型后,在需要添加业务逻辑时往往需要重新修改整合代码,这样违背了开放-封闭原则,不利于维护。而AOP指面向方面编程,简单说就是可在旧有代码的执行流程中横切几刀在交接的切面上加上自己的业务逻辑后再继续原有执行流程。这样的话一般业务逻辑的更改都可交由AOP技术实现。

自己的例子中涉及到的两个概念:Pointcut指定要加入业务逻辑的位置,简单直白的说就是指定在哪一个类的哪一个方法上加入;Advice顾名思义,自己的程序逻辑要添加在切面的哪个阶段即对切面执行顺序的建议,我用到Before、After、AfterThrowing分别对应切面执行前、执行后、抛出异常后的情况。具体来说是对三个Advice类型@Before、@After、@AfterThrowing和PointCut的应用。AOP部分使用的是注解方式,IoC部分使用的XML配置。另外注意被加入逻辑的类应该实现一个接口,因为Spring对AOP的支持应用的技术是动态代理。

程序模拟的是简单的一个保存用户的过程,下面进入正题:

原始类代码和未使用AOP技术前程序执行结果

原有方法

OriginalResult

加入AOP的程序产生的大致步骤和执行结果如下

     1、引入需要的jar包--我把使用Spring相关的通常依赖的jar包都加入到了自定义库里,有些当然不是AOP用到的,我就不深究它们的关系了。

Spring包

     2、在Spring配置文件里加入对Aop的支持,包括命名空间和使用到的标签。

Spring配置文件

     3、定义切面类,在类定义前面加上@Aspect的注解标记,添加一方法作为Pointcut的签名;添加要加入的业务逻辑方法:在方法前加上Advice类型并设定好Value值即要加入业务逻辑的切面。

切面类

     4、在Spring配置文件里加入Advice对应的Bean,还有由Spring管理的UserServiceImp对应的Bean。

简单AOP完整配置

     6、编写测试类。

测试 

    7、最后执行测试可看到JUnit指示和命令行里被加入的程序逻辑。

testResult

CommandResult

原创粉丝点击