有一个测试类
package com.imooc.aop.aspectj.biz;
import org.springframework.stereotype.Service;
import com.imooc.aop.aspectj.MoocMethod;
@Service
public 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!";
}
}
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