1、首先定义一个注解,指明RUNTIME
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Target(value={ElementType.METHOD})
public @interface FistAnnotation {
String name() default "null";
}
2、切面类,这里我针对study.boot.controller包下面的所有方法,这样就简单完成了一个针对于方法级别的切面
@Aspect
@Component
public class FirstAspect {
@Pointcut("execution(* study.boot.controller..*.*(..)) && @annotation(study.boot.interfaces.FistAnnotation)")
public void addAdvice(){}
@Around("addAdvice() && @annotation(annotation) ")
public Object Interceptor(ProceedingJoinPoint pjp,FistAnnotation annotation){
System.out.println("進來啦");
System.out.println(annotation.name());
Object result = null;
Object[] args = pjp.getArgs();
try {
result =pjp.proceed();
} catch (Throwable e) {
e.printStackTrace();
}
return result;
}
}