关键的类

简介: 通过自定义`@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天前
|
人工智能 运维 物联网
搞定多模态微调只需一杯咖啡的时间?FC DevPod + Llama-Factory 极速实战
告别显存不足、环境配置难与高昂成本!本文带你用阿里云函数计算FC + Llama-Factory,5分钟搭建Qwen2-VL多模态模型的Serverless微调流水线。无需运维,按需付费,通过WebUI点击完成数据准备、LoRA微调、效果验证与模型导出,让AI训练像P图一样简单。低成本、高效率,人人皆可玩转大模型。
|
1天前
|
人工智能 自然语言处理 人机交互
2025中国AI数字人企业厂商新排名与推荐全栈自研技术及数字引擎推荐选择
AI数字人正以逼真形象、智能交互与多场景应用崛起为科技新势力。依托NeRF、AIGC等技术,实现表情动作自然同步,广泛应用于金融、政务、医疗等领域,推动服务智能化升级。像衍科技、阿里云、百度等企业引领创新,重塑人机交互未来。
|
1天前
|
SQL 运维 分布式计算
如何做好SQL质量监控
SLS推出用户级SQL质量监控功能,集成于CloudLens for SLS,提供健康分、服务指标、运行明细、SQL Pattern分析及优化建议五大维度,帮助用户全面掌握SQL使用情况,实现精细化管理与性能优化,提升日志分析效率与体验。
|
1天前
|
运维 Devops 开发工具
生产环境缺陷管理
针对大型团队Git多分支开发中bug协同难、易遗漏等问题,我们基于go-git打造了通用型工具git-poison,实现分布式、自动化bug追溯与管理。通过“投毒-解毒-银针”机制,精准阻塞带缺陷版本发布,避免因沟通疏漏导致的生产故障。已集成至发布与运维平台,显著降低协作成本,提升发布安全性与效率。
|
1天前
|
敏捷开发 Dubbo Java
需求开发人日评估
随着敏捷开发普及,人日评估成关键环节。本文详解开发、自测、联调、测试及发布各阶段工时分配,提供常见需求如增删改查、接口调用等的人日参考,并强调并行需求下的调整策略,助力团队精准估算工期,提升协作效率。(238字)
|
1天前
|
前端开发 搜索推荐 测试技术
背景图变换
本文介绍如何基于若依(RuoYi)框架定制化项目:更换浏览器标签logo、系统页面logo与标题、登录页名称及背景图,去除官网标识,并调整主题风格。通过替换静态资源、修改配置文件及全局搜索删除冗余链接,实现项目个性化展示,提升品牌辨识度,适用于前端界面定制开发场景。(238字)
|
1天前
|
Java 测试技术 Linux
生产环境发布管理
本文介绍大型团队如何通过自动化部署平台实现多环境(dev→test→pre→prod)高效发布,涵盖各环境职责、基于Jenkins+K8S的CI/CD流程、分支管理与热更新机制,并结合Skywalking日志链路追踪快速定位问题,提升发布效率与系统稳定性。
|
1天前
|
存储 监控 Java
整合切面,参数拦截+过滤
该类基于Spring AOP实现请求参数日志记录,通过@Aspect切面拦截Controller层请求,记录请求来源、URL、方式、方法及入参,并统计执行时间,便于调试与监控,日志通过SLF4J输出,支持后续扩展存储。
|
1天前
|
敏捷开发 Java 测试技术
为什么要单元测试
单元测试看似“踩刹车”,实则让开发跑得更快。它提升代码质量、降低维护成本,是高效研发的基石。从谷歌到微软,行业实践证明:充分的单元测试能加速迭代、增强信心,助力软件从“爬行”迈向“奔跑”。
|
1天前
|
SQL 缓存 Java
汇总
本文汇总MyBatis核心配置与使用要点,涵盖配置加载优先级、多环境配置、事务管理、XML映射(一对一、一对多、多对多)、分页策略(逻辑与物理分页对比)、缓存机制、执行器类型及批量操作源码分析,助力高效开发。