aop实现日志记录通过自定义注解方式

发布时间 2023-04-28 14:42:13作者: myWang
切面类切入点引入注解
@Pointcut("@annotation(com.test.aop.MyLog)") private void pointcut(){}

注解类
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD) //指定实现的类型及运行时机
public @interface MyLog {
}

在使用的方法上加自定义注解
@MyLog
方法

log.info("MyAspect8 around before ...");

//1. 获取 目标对象的类名 .
String className = joinPoint.getTarget().getClass().getName();
log.info("目标对象的类名:{}", className);

//2. 获取 目标方法的方法名 .
String methodName = joinPoint.getSignature().getName();
log.info("目标方法的方法名: {}",methodName);

//3. 获取 目标方法运行时传入的参数 .
Object[] args = joinPoint.getArgs();
log.info("目标方法运行时传入的参数: {}", Arrays.toString(args));

//4. 放行 目标方法执行 .
Object result = joinPoint.proceed();

//5. 获取 目标方法运行的返回值 .
log.info("目标方法运行的返回值: {}",result);

log.info("MyAspect8 around after ...");
return result;