SpringBoot自定义注解

发布时间:2024年01月11日

我遇到个需求,给每个人做操作记录,记录是另一个服务,往数据库里插入记录日志。但是并不是所有的操作都要加记录。所以这里涉及到注解。在你需要的接口前加一个注解,就可以记录这个操作。

注解其实就是一个类,可以定义在接口上,然后在拦截器里根据这个类的值进行判断,这是最常用的方法。

OperLog日志类

package com.dengtacj.tanzhiw.virtualhuman.config;


import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @version 1.0
 * @Description 操作日志记录
 * @Date 2024/1/11
 * @return
 **/
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface OperLog {

    //日志操作
    String nameOper() default "";


}

在拦截器里面的加

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
//验证方法 (这是你以前拦截的)
....

//如果认证通过,则进行日志记录
                    if(method.isAnnotationPresent(OperLog.class)){
                    String token = request.getHeader("Authorization");
                    if(token==null){
                        System.out.println("不进行日志记录,因为token为null");
                    }else{
                        //日志记录
                        OperLog operLog = method.getAnnotation(OperLog.class);
                        System.out.println("目前operLog操作值是"+operLog.nameOper());
                        System.out.println("目前token的值是"+token);
                        发送post请求记录日志...
                    }

}

? ? ? ? 在被调用的接口加,我在查询接口上写例子


    @OperLog(nameOper = "查询克隆音")
    @RequestMapping(value = "/reader/clone/list", method = {RequestMethod.POST})
    public CommonResult<PageInfo<LiveUserTrainReaderEntity>> cloneList(HttpServletRequest request, @RequestBody CommAppPagePo po) {
        try {
            return CommonResult.success(liveUserTrainReaderService.getByUserId(po));
        } catch (Exception e) {
            logger.error("Exception:", e);
            return CommonResult.failed();
        }
    }

然后我们调用这个接口,测试

成功

参考:https://www.cnblogs.com/zys2019/p/12075083.html

文章来源:https://blog.csdn.net/qq_38403590/article/details/135519071
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。