1、注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTest {
String message() default "我是默认值";
}
2、aop切面
@Component
@Aspect
public class MyTestAspect {
@Before("@annotation(myTest)")
private void Before(JoinPoint joinPoint, MyTest myTest){
System.out.println("开始时间:"+System.currentTimeMillis());
System.out.println("方法签名:" + joinPoint.getSignature());
System.out.println("方法参数:" + Arrays.toString(joinPoint.getArgs()));
System.out.println("目标对象:" + joinPoint.getTarget());
System.out.println(myTest.message());
}
@AfterReturning(pointcut = "@annotation(myTest)")
public void doAfterReturning(JoinPoint joinPoint, MyTest myTest)
{
System.out.println("结束时间:"+System.currentTimeMillis());
}
@Around("@annotation(myTest)")
public void doAround(ProceedingJoinPoint joinPoint,MyTest myTest) throws Throwable {
System.out.println("方法开始调用");
Object result=joinPoint.proceed();
System.out.println("方法调用结束");
}
@AfterThrowing(value = "@annotation(myTest)", throwing = "e")
public void doAfterThrowing(JoinPoint joinPoint, MyTest myTest, Exception e)
{
System.out.println("接口调用异常"+e);
}
}
3、接口处使用
@GetMapping("/getRecorderList")
@MyTest(message = "我不是默认值")
public TableDataInfo getRecorderList(RecorderInfoVo recorderInfoVo)
{
startPage();
List<RecorderInfoVo> list = service.getRecorderList(recorderInfoVo);
return getDataTable(list);
}
4、结果