前言
有时候我们在处理请求的时候会记录操作日期到数据库中,或者在对一些方法参数进行增强,比如查询条件时需要根据用户权限做一些限制等等。下面通过自定义注解去记录日志。
自定义一个注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OperationLog {
/**
* 记录的操作名称
*/
String value();
/**
* 是否记录请求参数
*/
boolean logParam() default false;
}
定义切面类
@Component
@Aspect
@Slf4j
public class OperationLogAspect {
@After("@annotation(operationLog)")
public void getPointAcc1(JoinPoint joinPoint, OperationLog operationLog) {
// 获取注解的属性值
String value = operationLog.value(); // 记录的操作名称
boolean logParam = operationLog.logParam(); // 是否记录请求参数
// 自定义处理,可以在这里将操作保存
log.info("方法:{},操作名称:{},是否记录返回值:{}",joinPoint.getSignature().getName(),value,logParam);
}
}
使用注解
@RestController
@RequestMapping("demo")
public class DemoAopController {
@GetMapping
@OperationLog(value = "测试操作",logParam = true)
public DemoApoReq demo(DemoApoReq demoApoReq){
return demoApoReq;
}
}
评论区