Aop实现参数日志存储在数据库-MybatisPlus

 一、Aop

@Slf4j
@Aspect
//声明是bean组件
@Component
public class LogParamAop {

    @Autowired
    private LogParamService logParamService;

    //定义切入点
    @Pointcut("execution(public * com.qcby.xmfs.information1.controller..*.*(..))")
    public void paramPointCut(){

    }
    //通知配置
    @Around("paramPointCut()")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable{

        //保存参数日志
        LogParam logParam=new LogParam();

        //获取用户名
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        String token= request.getHeader("token");
        if (token!=null){
            logParam.setUsername(JwtUtil.getUser(token).getUsername());
        }

        //获取接口名
        MethodSignature signature=(MethodSignature) joinPoint.getSignature();
        Method method=signature.getMethod();
        logParam.setMethod(method.getName());

        //获取入参
        Object[] args =joinPoint.getArgs();

        String paramIn= JSON.toJSONString(args);
        logParam.setParamIn(paramIn);

        //获取出参
        Object param =joinPoint.proceed();
        String paramOut=JSON.toJSONString(param);
        logParam.setParamOut(paramOut);

        //获取时间
        LocalDateTime localDateTime= LocalDateTime.now();
        logParam.setOperateTime(localDateTime);

        log.info("开发测试:aop参数日志=》"+logParam);


        logParamService.save(logParam);
        return param;



    }
}

二、自定义注解

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Module {
    //模块名
    String value() default "";
}
@Target(ElementType.METHOD) //注解级别,method:注解用在方法级别上
@Retention(RetentionPolicy.RUNTIME) //注解在哪个阶段执行,runime:运行时执行
@Documented //
public @interface Operate {
    //操作名
    String value() default "";
}

三、实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class LogParam {

    private Long id;
    private Long username;
    private String method;
    private String paramIn;
    private String paramOut;
    private LocalDateTime operateTime;


}

四、结果

 


版权声明:本文为m0_57659908原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。