学习记录

来源:互联网 发布:msde和sql 编辑:程序博客网 时间:2024/05/21 09:20

有一个测试类

package com.imooc.aop.aspectj.biz;import org.springframework.stereotype.Service;import com.imooc.aop.aspectj.MoocMethod;@Servicepublic class MoocBiz {@MoocMethod("MoocBiz save with MoocMethod.")public String save(String arg) {System.out.println("MoocBiz save : " + arg);//throw new RuntimeException(" Save failed!");return " Save success!";}}


带参数的advice注解 

PS:注解中的参数名称必须与before方法中的参数名称相同

注解中的参数名称必须与实际方法中传入的参数名称相同

以@Before为例子 

普通参数的

@Before("pointcut() && args(arg)")public void beforeWithParam(String arg) {System.out.println("BeforeWithParam." + arg);}


关于自定义注解作为参数的

@Before("pointcut() && @annotation(moocMethod)")public void beforeWithAnnotaion(MoocMethod moocMethod) {System.out.println("BeforeWithAnnotation." + moocMethod.value());}


另外一种方式
@Pointcut("execution(* com.imooc.aop.aspectj.biz.*Biz.*(..))&&@annotation(moocMethod)")public void pointcut(MoocMethod moocMethod) {}
@Before("pointcut(moocMethod)")public void beforeWithAnnotaion(MoocMethod moocMethod) {System.out.println("BeforeWithAnnotation." + moocMethod.value());}


泛型参数的advice注解



Advice参数名称

argNames可以缩写为args



0 0