关键的类

简介: 通过自定义`@Log`注解标记需记录日志的方法,结合AOP切面`LogAspect`拦截并解析注解,提取操作信息。利用`AsyncManager`异步执行由`AsyncFactory`创建的日志任务,通过线程池配置实现高效、非阻塞的日志持久化处理,提升系统性能与响应速度。(238字)

关键的类
com.ruoyi.common.annotation.Log 自定义注解
Java
运行代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.ruoyi.common.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.enums.OperatorType;

/**

  • 自定义操作日志记录注解
  • @author ruoyi
    /
    @Target({ ElementType.PARAMETER, ElementType.METHOD })
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Log
    {
    /**

    • 模块
      */
      public String title() default "";

      /**

    • 功能
      */
      public BusinessType businessType() default BusinessType.OTHER;

      /**

    • 操作人类别
      */
      public OperatorType operatorType() default OperatorType.MANAGE;

      /**

    • 是否保存请求的参数
      */
      public boolean isSaveRequestData() default true;

      /**

    • 是否保存响应的参数
      */
      public boolean isSaveResponseData() default true;

      /**

    • 排除指定的请求参数
      /
      public String[] excludeParamNames() default {};
      }
      用于标注需要记录操作日志的方法或参数。注解包含多个属性,可以设置日志的模块、功能、操作人类别、是否保存请求和响应参数、以及排除指定的请求参数等。注解可以在方法或参数上使用,并且在运行时可以被读取和解析,以便根据注解的信息记录相应操作日志。
      Java
      运行代码
      复制代码
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      /*
  • 修改通知公告
    */
    @PreAuthorize("@ss.hasPermi('system:notice:edit')")
    @Log(title = "通知公告", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@Validated @RequestBody SysNotice notice)
    {
    notice.setUpdateBy(getUsername());
    return toAjax(noticeService.updateNotice(notice));
    }
    com.ruoyi.framework.aspectj.LogAspect 在一个aop切面类
    通过实现AOP切面编程,对目标方法进行拦截(标注Log注解的方法),实现了操作日志的自动记录
    com.ruoyi.framework.manager.AsyncManager 异步任务管理器
    提供了执行延迟任务和关闭任务线程池的功能
    com.ruoyi.framework.config.ThreadPoolConfig 初始化线程池,交给spring容器管理
    com.ruoyi.framework.manager.factory.AsyncFactory 异步工厂,产生任务(记录日志到数据库)
    整体实现思路
相关文章
|
1月前
|
人工智能 自然语言处理 人机交互
2025中国AI数字人企业厂商新排名与推荐全栈自研技术及数字引擎推荐选择
AI数字人正以逼真形象、智能交互与多场景应用崛起为科技新势力。依托NeRF、AIGC等技术,实现表情动作自然同步,广泛应用于金融、政务、医疗等领域,推动服务智能化升级。像衍科技、阿里云、百度等企业引领创新,重塑人机交互未来。
|
1月前
|
人工智能 运维 物联网
搞定多模态微调只需一杯咖啡的时间?FC DevPod + Llama-Factory 极速实战
告别显存不足、环境配置难与高昂成本!本文带你用阿里云函数计算FC + Llama-Factory,5分钟搭建Qwen2-VL多模态模型的Serverless微调流水线。无需运维,按需付费,通过WebUI点击完成数据准备、LoRA微调、效果验证与模型导出,让AI训练像P图一样简单。低成本、高效率,人人皆可玩转大模型。
|
1月前
|
Java
方法重载
本示例演示Java中方法重载的用法:在同一个类中,允许方法名相同但参数列表不同(参数个数、类型或顺序不同),与返回值无关。通过重载可简化方法命名,提升代码可读性和复用性。
|
1月前
|
Java
java代码
本示例讲解Java中方法的定义与调用,包括无参无返回值、有参无返回值及有参有返回值三种方法,演示代码复用与功能封装,帮助理解方法概念、作用及基本语法结构。(238字)
|
1月前
|
SQL 运维 分布式计算
如何做好SQL质量监控
SLS推出用户级SQL质量监控功能,集成于CloudLens for SLS,提供健康分、服务指标、运行明细、SQL Pattern分析及优化建议五大维度,帮助用户全面掌握SQL使用情况,实现精细化管理与性能优化,提升日志分析效率与体验。
|
1月前
|
NoSQL Linux 网络安全
Windows系统安装启动
本文介绍MongoDB在Windows和Linux系统的安装启动方法,包括下载、解压、配置数据目录与端口,支持命令行和配置文件两种方式。同时讲解了如何通过mongo shell连接数据库及使用图形化工具Compass。Linux环境下还涉及防火墙设置与服务启停操作,确保单机部署稳定运行。
|
1月前
|
Java
强制类型转换
本示例演示Java中强制类型转换的使用。通过 `(数据类型)` 语法将范围大的数据转为范围小的类型,如 int 转 byte、double 转 int,可能造成数据截断或精度丢失,字符串与基本类型间不能直接强转。
|
1月前
|
Java
类型转换
本示例演示Java中自动类型转换规则:小范围数据类型可自动转为大范围类型。如byte、short、char自动转int,int转long,long转float等,其中float精度约8位,超出部分用科学计数法表示。
|
1月前
|
Java
数据类型
本示例演示Java基本数据类型的使用,涵盖byte、short、int、long整型范围,float、double浮点数精度限制,char字符与ASCII码转换,boolean布尔类型,并强调变量命名规范及long、float声明时的L/F后缀使用。
|
1月前
|
Java
不同进制写法
本示例演示Java中不同进制的表示方法:二进制以0b/0B开头,八进制以0开头,十进制直接书写,十六进制以0x/0X开头,并展示各类进制转换结果及对象内存地址的十六进制输出。