• 若依注解学习(一)@Log


    @Log

            涉及到:
                Log,LogAspect,SecurityUtils,SysUser,SysOperLog,BusinessStatus,StringUtils,ServletUtils
                AsyncManager,AsyncFactory,AddressUtils,IpUtils,RuoYiConfig,HttpUtils,JSONObject,
                ISysOperLogService

                security当前用户,获取ip,获取请求信息,注解参数解析,异步处理,任务工厂,统一异常处理

            位置:
                在我们使用ruoyi的代码生成器的时候,在controller的每个方法出现


            作用:
                写在方法上,通过aop切面编程,在方法执行前、方法执行完、方法异常的时候做处理
                包括对用户的每一次操作进行数据库存储,记录用户操作

            Log定义位置:
                common中,出现在公共模块,若出现在其他模块,极其容易出现模块相互依赖的问

                题,所以ruoyi框架为什么要定义在这


            aop处理:
                core中,core是ruoyi框架的核心代码,在aop中对操作进行处理,其中,会调用安全框架来

                获取当前用户存到SysUser中
                注意这个对象也写在common,也是避免模块依赖问题

                其中的shiroUtils我改成了SecurityUtils,具体逻辑就是从security安全上下文取出当前用

                户,若出现异常则捕获,抛出
                CustomException异常,这个异常继承了RuntimeException,会被若以的全局异常处理

             (@RestControllerAdvice)
                
                接着设置数据库日志对象,保存数据库:
                    SysOperLog:
                        设置操作为成功
                        ip:可以直接从security安全上下文获取
                        url:RequestContextHolder获取    getRequestAttributes 再获取    getRequest  再获取      getRequestURI
                        设置用户信息
                        抛出异常则把操作设置为失败    
                        设置方法名,请求方式,根据Log上的参数设置信息
                        异步处理器执行任务保存数据库:
                            调用service,mapper保存
                        
                注意:若以框架有专门的异步处理器AsyncManager
                        通过AsyncManager.me().execute(AsyncFactory.recordOper(operLog));异步处理

                其中AsyncManager中:
                        异步线程池通过springUtils获取: * spring工具类 方便在非spring管理环境中获取bean,  SpringUtils.getBean("scheduledExecutorService");
                        单例
                        execute:参数为一个Task,该Task通过任务工厂AsyncFactory生产你要执行的任务·
                        

  • 相关阅读:
    Leetcode-160 相交链表
    算法刷题路线总结与相关资料分享
    C#教程14:命名空间
    干货分享|一文示例优炫数据库的列存用法
    基于SpringBoot和PostGIS的世界各国邻国可视化实践
    4. 3 配置Mysql与注册登录模块(下)
    剑指offer(C++)-JZ67:把字符串转换成整数atoi(算法-模拟)
    java---网络编程
    【学习笔记】CF1874B Jellyfish and Math
    电脑WIFI突然消失
  • 原文地址:https://blog.csdn.net/qq_59384418/article/details/132970097