xml配置的思想和注解配置的思想基本上是没有什么两样的,方法并没有什么不同,只是过程有差异而已。

一、实现业务逻辑

 二、写好两个配置类(为了演示更详细所以写两个配置类)

写下来是重头戏,写好两个配置类,这也是最难的地方:

和上篇文章的注解配置方式很相似,只是所有方法的注解都没有了。

这样准备工作就完成了。

三、配置xml

创建xml文件application,回想一下我们用注解的方法是怎么配置的。

(1)我们想实现计算方法,那么就要把业务逻辑放到ioc容器里面吧?

1.注解方式

使用@Component(“calculator”)注解创建了bean。

2.xml方式

在xml中配置bean

写在xml文件中。

(2)我们想实现日志的功能,配置了两个切面类。所以说切面也必须放到ioc容器里面吧?

1.注解方式

@Component和@Aspect(只有加上@Aspect注解spring才知道这个类是切面)。

2.xml方式

直接配置bean。

(注:xml文件中需要加上<aop:config></aop:config>)

现在所有类都放在ioc容器中了,接下来就配置aop。

(3)我怎么知道在什么类的什么方法执行时,执行切面类的方法呢?

所以说要配置切点表达式。

1.注解方式

用的时候就调用函数名,例如:

或者不调用,直接配就可以。

2.xml方式

用的时候就调用id

或者不调用,ref直接配也可以。

(4)配置切面以及通知

1.注解方式

@Before(“declareJoinPointExpression()”)就是通知类型。

2.xml方式

  1. ref指向切面类的id。
  2. order是执行顺序,值小的优先执行。
  3. before,after那些东西是通知类型。
  4. pointcut-ref是切点表达式,如果不单独配切点表达式的话,也可以ref自己指定,关于切点表达式在(7)中有说明。
  5. method对应着切面类中的函数。
  6. 特别注意after-returning和after-throwing:如果你的切面方法中配置了返回值,一定要配置returning和throwing这两个参数,参数名要和方法中的参数名一致,不然会报错。

(5)我想控制切面方法的执行顺序,怎么控制?

1.注解方式

@Order()

2.xml方式

(4)中已经讲到了,可以通过order标签控制。

(6)我想重用切点表达式,能不能单独拿出来呢?

当然可以。

applicationxml.xml

运行结果:

成功执行了。

三、总结

所以说只要搞懂了spring aop的运行流程,想要实现什么,怎么去实现,无论是注解配置还是xml配置,都是很简单的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注