spring使用aspectj开发的增强类型注解和aspectj在spring中用到的切点函数

来源:互联网 发布:数据精灵官网 编辑:程序博客网 时间:2024/06/04 19:32

@Before

前置增强,相当于BeforeAdvice的功能,Before 注解类拥有两个成员:

value:该成员用于定义切点;

argNames:由于无法通过java反射机制获取方法入参数名,所以如果要在java编译时未启用调试信息或者需要在运行期间解析切点。就必须通过这个成员指定注解所标注增强的方法的参数名(注意两者名字必须完全相同),多个参数名用逗号分隔。


@AfterReturning

后置增强,相当于AfterReturningAdvice,AfterReturning注解类拥有四个成员:

value:该成员用于定义切点;

pointcut:表示切点的信息,如果显示指定pointcut的值,它将覆盖value的设置值,可以将pointcut成员看成是value的同义词;

returning:将目标对象方法的返回值绑定给增强的方法;

argNames:如前所述。


@Around

环绕增强,相当于MethodInterceptor,Around注解类拥有两个成员:

value:该成员用于定义切点;

argNames:如前所述。


@AfterThrowing

 抛出增强,相当于ThrowsAdvice, AfterThrowing 注解类拥有4个成员:

value:该成员用于定义切点;

pointcut:表示切点的信息,如果显式指定pointcut值,它将覆盖value的设置值,可以将pointcut成员看成是value的同义词;

throwing:将抛出的异常绑定到增强方法中;

argNames:如前所述。


@ After

Final 增强,不管是抛出异常或者是正常退出,该增强都会得到执行,该增强没有对应的增强接口,可以把它看成ThrowAdvice和AfterReturningAdvice的混合物,一般用于释放资源,相当于try{}finally{}的控制流,After注解类拥有两个成员:

value:该成员用于定义切点;

argNames:如前所述


@DeclareParents

引介增强,相当于IntroductionInterceptor,DeclareParents注解类拥有两个成员:

value:该成员用于定义切点,它表示在哪个目标类上添加引介增强;

defaultImpl :默认的接口实现类。



切点方法:

execution() 方法匹配模式串 ,表示满足某一匹配模式的所有目标类方法连接点点。

@annotation() 方法注解类名,表示标注了特定注解的目标方法连接点。

args() 类名 ,通过判别目标类方法运行时入参对象的类型定义指定连接点。

@args()类型注解类名, 通过判别目标方法运行时入参对象的类是否标注特定注解来指定连接点。

within()类名匹配串 ,表示特定域下所有连接点。

target()类名 ,假如目标类按类型匹配于指定类,则目标类的所有连接点匹配这个切点。

@within()类型注解类名, 假如目标类按类型匹配于某个类a,且类a标注了特定注解,则目标类的所有连接点都匹配这个切点

@target()类型注解类名 ,目标类标注了特定注解,则目标类所有连接点匹配该切点。

this() 类名



0 0
原创粉丝点击