• springboot整合aop全局日志管理


    1.引入jar包

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.4</version>
    </dependency>

    2.aop日志类

    @Log4j2
    @Aspect
    @Component
    public class WebLogAspect {
    
        @Pointcut("execution(public * io.renren.controller.*.*(..))")
        public void logCut() {
        }
    
        @Before("logCut()")
        public void doBefore(JoinPoint joinPoint) {
            // 接收到请求,记录请求内容
            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = attributes.getRequest();
    
            log.info("请求地址 : " + request.getRequestURL().toString());
            log.info("参数 : " + Arrays.toString(joinPoint.getArgs()));
        }
    
        @Around("logCut()")
        public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
            long startTime = System.currentTimeMillis();
            Object ob = pjp.proceed();// ob 为方法的返回值
            log.info("请求耗时 : " + (System.currentTimeMillis() - startTime) / 1000.0 + "s");
            return ob;
        }
    }
    

    再次启动项目,控制台将输出日志,并将日志写入到文件中

    3.利用aop实现表单防重复提交

    方法1:

    1.后端生成一个唯一的提交令牌(token),并存储在缓存中。

    2.页面提交请求携带这个提交令牌,后端验证并在第一次验证后删除该令牌,保证提交请求的唯一性。

    方法2:

    1.自定义注解 @NoRepeatSubmit 标记Controller中的提交请求

    2.通过AOP 对所有标记了 @NoRepeatSubmit 的方法拦截

    3.在业务方法执行前,获取当前用户的 token + 当前请求地址,作为一个唯一 KEY,去获取锁

    4.业务方法执行后,释放锁

     

  • 相关阅读:
    iOS开发学习树
    iOS开发数据库篇—FMDB数据库队列
    iOS开发数据库篇—FMDB简单介绍
    iOS开发数据库篇—SQLite常用的函数
    iOS开发数据库篇—SQLite模糊查询
    iOS开发数据库篇—SQLite的应用
    iOS开发数据库篇—SQL代码应用示例
    iOS开发数据库篇—SQL使用方法
    iOS开发数据库篇—SQLite简单介绍
    C#-汉字转拼音缩写
  • 原文地址:https://www.cnblogs.com/xxrl-c/p/12195945.html
Copyright © 2020-2023  润新知