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

切面类切入点引入注解
@Aspect
@Component
@Pointcut("@annotation(com.test.aop.MyLog)")//切入点通过注解实现 private void pointcut(){}
@Around("pt()")环绕引用切入点
public Object Log(ProceedingJoinPoint joinPoint) throws Throwable {
//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("around after ...");
return result;
}
注解类
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD) //指定实现的类型及运行时机
public @interface MyLog {
}

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


 

posted @ 2023-04-28 14:39  myWang  阅读(23)  评论(0)    收藏  举报