关键的类

简介: 通过自定义`@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 异步工厂,产生任务(记录日志到数据库)
    整体实现思路
相关文章
|
3月前
|
人工智能 自然语言处理 人机交互
2025中国AI数字人企业厂商新排名与推荐全栈自研技术及数字引擎推荐选择
AI数字人正以逼真形象、智能交互与多场景应用崛起为科技新势力。依托NeRF、AIGC等技术,实现表情动作自然同步,广泛应用于金融、政务、医疗等领域,推动服务智能化升级。像衍科技、阿里云、百度等企业引领创新,重塑人机交互未来。
|
3月前
|
人工智能 运维 物联网
搞定多模态微调只需一杯咖啡的时间?FC DevPod + Llama-Factory 极速实战
告别显存不足、环境配置难与高昂成本!本文带你用阿里云函数计算FC + Llama-Factory,5分钟搭建Qwen2-VL多模态模型的Serverless微调流水线。无需运维,按需付费,通过WebUI点击完成数据准备、LoRA微调、效果验证与模型导出,让AI训练像P图一样简单。低成本、高效率,人人皆可玩转大模型。
|
存储 监控 安全
基于【国基北盛】云基础架构平台软件搭建openstack私有云平台(先电V2.4版本)(上)
基于【国基北盛】云基础架构平台软件搭建openstack私有云平台(先电V2.4版本)
1716 0
基于【国基北盛】云基础架构平台软件搭建openstack私有云平台(先电V2.4版本)(上)
|
架构师 Devops 测试技术
DevOps 进阶实践课,连续 4 期,看看有你想听的吗?
探索DevOps进阶实践?加入阿里云专家的直播课!了解企业研发规范新思路、云效YAML流水线详解、微服务灰度发布最佳实践和规模化项目管理。资深专家分享实战经验,解答疑问,带你提升DevOps效率。
1425 3
|
数据可视化 UED
如何巧妙利用动画效果,提升用户体验感!
巧妙利用动画效果可以极大地提升用户体验感
581 57
|
人工智能 自然语言处理 机器人
Prompt learning 教学[进阶篇]:简介Prompt框架并给出自然语言处理技术:Few-Shot Prompting、Self-Consistency等;项目实战搭建知识库内容机器人
Prompt learning 教学[进阶篇]:简介Prompt框架并给出自然语言处理技术:Few-Shot Prompting、Self-Consistency等;项目实战搭建知识库内容机器人
Prompt learning 教学[进阶篇]:简介Prompt框架并给出自然语言处理技术:Few-Shot Prompting、Self-Consistency等;项目实战搭建知识库内容机器人
|
Rust 前端开发 Oracle
|
设计模式 前端开发 安全
理解最常用的MVC分层模型及其变种
【6月更文挑战第24天】 本文介绍架构模式如MVC、MVVM和MVP是解决软件结构问题的通用方案。。每种模式有其优缺点,适用场景不同。
972 0
理解最常用的MVC分层模型及其变种
|
数据采集 物联网 数据挖掘
API接口的应用
API接口在现代技术中至关重要,它使不同软件、设备间能相互通信和数据共享。在社交网络中,如Facebook及Twitter的API让开发者能够构建交互式应用;移动应用则依赖API与服务器通信,实现天气查询、地图定位等功能;云计算平台如AWS通过API提供了资源管理和配置服务;物联网设备使用API实现数据交换;视频游戏开发商利用各类平台API发布游戏。此外,API爬虫数据接口技术通过爬虫抽取并输出数据,被广泛应用于获取商业、金融、医疗等领域的大数据,以支持数据分析、策略制定及业务流程优化,极大地提高了数据收集与处理的效率和准确性。
|
监控 项目管理
项目管理的五大过程组及十大知识领域
项目管理的五大过程组及十大知识领域
1396 0