SpringBoot

简介: 基于Spring AOP实现请求参数拦截与日志记录,通过切面在Controller层前置捕获请求信息,包括IP、URL、方法、参数等,并记录执行时间,便于调试与监控,支持后续扩展至数据库或ELK日志存储。
  1. 整合切面,参数拦截+过滤

package cn.zhicall.web.aspect;

import com.zhicall.framework.core.common.utils.log.LogProxy;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;

/**

  • @author hebo@zhicall.cn
  • @version 1.0
  • @date 2020/6/5 0005 10:48
  • @Desc 入参前置拦截,借助Spring-AOP
    */
    @Component
    @Aspect
    public class RequestParamsAspect {

    protected final Logger logger = LogProxy.getLogger("REQUEST_PARAM_LOG");

    //为了记录执行时间 方便调试 如果不需要可以去掉
    ThreadLocal startTime = new ThreadLocal<>();

    /*

    • 这样可以扫描controller路径下面全部
    • 我这里路径是com.test.controller
    • .user(包)
    • UserController...
    • .admin(包)
    • AdminController...
      /
      @Pointcut("execution(public
      cn.web.controller...*(..))")
      public void pointCut() {}

      /**

    • 参数进行限制或者拦截(后续可数据库存储或ELK)
    • @param joinPoint
    • @throws Throwable
      */
      @Before("pointCut()")
      public void before(JoinPoint joinPoint) throws Throwable {
      ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
      HttpServletRequest request = attributes.getRequest();
      logger.info("请求来源:" + request.getRemoteAddr());
      logger.info("请求URL:" + request.getRequestURL().toString());
      logger.info("请求方式:" + request.getMethod());
      logger.info("响应方法:" + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
      logger.info("请求参数:" + Arrays.toString(joinPoint.getArgs()));

      startTime.set(System.currentTimeMillis());
      }

      /**

    • 环绕执行(暂未使用)
    • 定义需要匹配的切点表达式,同时需要匹配参数
    • @param pjp
目录
相关文章
|
8月前
|
缓存 Ubuntu Linux
Docker安装
本文介绍在CentOS系统上安装Docker的完整步骤,包括卸载旧版本、配置阿里云镜像源、安装最新或指定版本的Docker引擎,并启动服务。同时涵盖Ubuntu系统的安装方法及离线安装方式,支持配置系统服务、daemon.json参数、日志管理与命令补全,最后通过`hello-world`验证安装成功。
325 0
|
6月前
|
人工智能 运维 机器人
2026年零基础部署OpenClaw(Clawdbot)集成QQ、微信、钉钉、飞书喂饭级教程
2026年,AI自动化代理已经成为个人办公、团队协作的标配工具。OpenClaw(曾用名Clawdbot、Moltbot)凭借轻量化、插件化、全平台兼容的特性,成为国内最受欢迎的开源AI助手框架。它可以通过自然语言完成信息查询、文案生成、代码编写、定时任务、文件处理等一系列自动化操作,真正实现“一句话交给AI,剩下的交给工具”。
3000 3
|
Java 编译器 数据库连接
Cause java.sql.SQLDataException Unsupported conversion from LONG to java.sql.Timestamp
Cause java.sql.SQLDataException Unsupported conversion from LONG to java.sql.Timestamp
1883 0
|
存储 Java Maven
SpringBoot整合Jest和Elasticsearch实践
SpringBoot整合Jest和Elasticsearch实践
685 1
|
数据建模 测试技术 应用服务中间件
在阿里云申请SSL证书多少钱?免费版与付费版申请流程介绍
阿里云2024年提供免费及付费SSL证书,免费版年领限20张,适合测试环境,352元/年起售付费版。个人/企业用户一年可领20张免费DV单域名证书。付费证书享折扣,如WoSign DV仅352元/年。下文将指导您快速领取、申请阿里云提供的免费版和收费版SSL证书。
在阿里云申请SSL证书多少钱?免费版与付费版申请流程介绍
|
Java API Spring
Springfox Swagger2从入门到精通
本文详细介绍了如何使用Springfox Swagger2在Spring Boot项目中生成API文档,包括引入依赖、配置Swagger2、启用Swagger2、编写API文档注释、访问Swagger UI以及常用注解分析和高级配置。
1702 0
Springfox Swagger2从入门到精通
|
自然语言处理 搜索推荐 Java
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(一)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
486 0
|
SQL 前端开发 关系型数据库
|
安全 Java 数据库
Spring Security加密解密
Spring Security加密解密
1059 0
|
Linux iOS开发 开发者
Windows、Linux 和 macOS 操作系统:操作系统大比较
Windows、Linux 和 macOS 操作系统:操作系统大比较
1139 0