• 自定义注解主要步骤


    1.自定义注解,

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface TFLogAnnotation {
        String module() default "";
        String remark() default "";
        TFLogOperationType tfoperationType() default  TFLogOperationType.UNKNOWN;  //这是个枚举类,定义在同级目录下
    }

    2.枚举类(非必须)

    使用注解时手动可标注类型,更直观

    
    
    /**
    * 在自定义注解要用调用到的枚举类
    */
    @AllArgsConstructor
    @Getter
    public enum TFLogOperationType {
        UNKNOWN("unknown"),
        DELETE("delete"),
        SELECT("select"),
        UPDATE("update"),
        INSERT("insert");
    
        private String value;
    
    }

    3.实体类

    利用打日志的业务举例,织入到Spring内部的代码肯定要涉及到持久化存储。要构建日志类,根据自身的情况看是否继承基类(小项目不用)

    /**
    * 基类
    **/

    public
    class BaseEntityTF implements Serializable { private static final long serialVersionUID = 1L; private String createBy; @JsonFormat( pattern = "yyyy-MM-dd HH:mm:ss" ) private Date createTime; private String updateBy; @JsonFormat( pattern = "yyyy-MM-dd HH:mm:ss" ) private Date updateTime; private Map<String,Object> params; private String remarks; }
    /**
    * 操作日志实体类,数据库表名规范正确 小写 xx_xxx
    */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @TableName("DWAPP.WLOperLog")
    public class OperateLogTF extends BaseEntityTF {

    /**
    * 日志主键
    */
    @TableId("oper_id")
    private Long operId;
      
      /**具体字段涉及公司业务,此处省略

    }

    4.Service与实现

    将数据持久化到数据库这个步骤必不可少,可以用接口分开,去编写mapper的xml映射等。当然写作业的话可以简单一些的可以写到一起。实现数据的持久化存储。被切面调用

    /**
     * @auther TomasFeng
     * @date 2021/9/23-11:09
     */
    
    public interface TFLogOperateService {
    void save(OperateLogTF operateLogTF);  
    }
    @Component public class TFLogOperateServiceImpl implements TFLogOperateService { @Override public void save(OperateLogTF operateLogTF) { /** * 存到表。 */ System.out.println("save"); } }

    5.重中之重:切面类。

    规定切点表达式,以及各个切入点的逻辑代码。

    package com.mediway.mdr.base.mylog.tfaspect;
    
    /**
     * @auther TomasFeng
     * @date 2021/9/23-11:15
     */
    
    
    /**
     * 切面类,构建出日志信息。持久化存储
     */
    @Aspect
    @Component
    public class TFAspect {
    
        @Autowired
        Service 
    
        @Pointcut("@)")
        public void pointcut(){
    
        }
    
        @Around("pointcut()")
        public Object around(ProceedingJoinPoint joinPoint){
            Object result = null;
    
    //TODO  注入实体类并存到数据库
    
            return result;
    
        }
    }
    如有差错,请各位指正
  • 相关阅读:
    【数据库】Navicat Premium12远程连接MySQL数据库
    【Linux】一步一步学Linux——Centos7.5安装图解(08)
    【Tools】VMware虚拟机三种网络模式详解和操作
    【Linux】一步一步学Linux——VMware虚拟机三种网络模式详解(07)
    【Linux】一步一步学Linux——VMware Workstation 15 Pro安装图解教程(06)
    微信公众平台开发(25) 数据库操作
    微信公众平台开发(24) 自定义菜单功能开发
    微信公众平台开发(23) 聊天机器人功能开发
    微信公众平台开发(22) 翻译功能开发
    微信公众平台开发(21) 天气预报功能开发
  • 原文地址:https://www.cnblogs.com/Timeouting-Study/p/15325104.html
Copyright © 2020-2023  润新知