// 自定义注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PrintLog {
String method();
String user() default "sys";
}
//aop
@Aspect
@Slf4j
@Component
public class PrintLogAop {
@Pointcut("@annotation(com.chinawayltd.fms.util.PrintLog)")
public void printLog(){};
@Around("printLog()")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
Method method=((MethodSignature)joinPoint.getSignature()).getMethod();
PrintLog printLog=method.getAnnotation(PrintLog.class);
log.info("方法执行前,method={}; user={}",printLog.method(),printLog.user());
Object o=joinPoint.proceed();
log.info("方法执行完");
return o;
}
}
//使用
@RestController
@RequestMapping("/log")
public class PrintLogController {
@GetMapping("/print")
@PrintLog(method = "ok")
public String ok(){
return "ok";
}
}