@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生产你要执行的任务·