spring学习第8天(advisor)

1.关于之前的一个错误:aop的输出顺序,实际上官方文档上并没有说是否按照书写顺序输出的,有可能你1000次里面800次按顺序输出,200是随机输出的。<aop:aspect>有一个order属性,值越小的先输出。

2.Advisor:通知器,有某个或某些通知类型的切面类

特定通知是靠此类实现某些接口来表示的.
spring有如下接口来表明不同的通知类型
MethodBeforeAdvice:前置通知
AfterReturningAdvice:返回通知
ThrowsAdvice:异常通知
MethodInterceptor:环绕通知
注意:没有最终通知(after通知)

advisor这种写法已经不推荐,主要是老版本的spring的一种配置方式,但是spring的事务配置方式用到了这种方法

<aop:config><aop:pointcut><aop:advisor></aop:config>

java代码中,主要是分别实现4种接口:

MethodBeforeAdvice 前置
AfterReturningAdvice 返回
MethodInterceptor 环绕,(是重写invoke方法的,有两个同名的接口)
ThrowsAdvice 抛出

ThrowsAdvice是一个空接口,但是它的方法签名有要求

异常通知接口是个空接口
* 方法的签名必须是:
* 1.返回类型是void
* 2.方法名是afterThrowing
* 3.方法的参数可以是
* 3.1 Method method, Object[] args, Object target(表明接收所有异常)
* 3.2 或者Method method, Object[] args, Object target,异常类(表示只接受一种定义的异常)

原文地址:https://www.cnblogs.com/woyujiezhen/p/11761512.html