1. 引入依赖

org.springframework.boot

spring-boot-starter-aop

2. 写切面

切面类需要加@Aspect和@Component注解

package com.test.demo.aspect;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.aspectj.lang.JoinPoint;

import org.aspectj.lang.ProceedingJoinPoint;

import org.aspectj.lang.annotation.AfterReturning;

import org.aspectj.lang.annotation.Around;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Before;

import org.aspectj.lang.annotation.Pointcut;

import org.springframework.stereotype.Component;

import org.springframework.web.context.request.RequestContextHolder;

import org.springframework.web.context.request.ServletRequestAttributes;

import cn.hutool.core.date.DateUtil;

import cn.hutool.extra.servlet.ServletUtil;

import cn.hutool.json.JSONUtil;

import io.swagger.annotations.Api;

import lombok.extern.slf4j.Slf4j;

@Aspect

@Component

@Slf4j

public class LogPrintAspect {

@Pointcut("execution(public * com.test.demo.*.*(..))")

public void getMethodName() {

}

@Pointcut("within(com.test.demo..*) && @within(org.springframework.web.bind.annotation.RestController)")

public void printParams() {

}

/**

* 打印请求参数

* @param joinPoint

*/

@Before(value = "printParams()")

public void paramsLog(JoinPoint joinPoint) {

ServletRequestAttributes requestAttributes =

(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();

HttpServletRequest request = requestAttributes.getRequest();

Class> targetClass = joinPoint.getTarget().getClass();

if (targetClass.isAnnotationPresent(Api.class)) {

Api swaggerApi = (Api) targetClass.getDeclaredAnnotation(Api.class);

log.info("模块的中文汉字 {} , {}", swaggerApi.value(), swaggerApi.tags()[0]);

}

log.info("sign -- {}", joinPoint.getSignature());

log.info("请求地址:" + request.getRequestURL().toString());

log.info("请求方式:" + request.getMethod());

Map m = ServletUtil.getParamMap(request);

log.info("请求参数:{}", m);

}

/**

* 打印响应内容

* @param o

*/

@AfterReturning(returning = "o", pointcut = "printParams()")

public void methodAfterReturing(Object o) {

log.info(JSONUtil.parse(o).toJSONString(1));

}

/**

* 打印方法耗时

* @param joinPoint

* @return

* @throws Throwable

*/

@Around("printParams()")

public Object around(ProceedingJoinPoint joinPoint) throws Throwable{

long startTime = DateUtil.current(false);

log.info("执行方法:{},开始时间:{}" , joinPoint.getSignature().getName() , startTime);

Object result = joinPoint.proceed();

long endTime= DateUtil.current(false);

log.info("执行方法:{},结束时间:{} , 用时:{} 毫秒 , " , joinPoint.getSignature().getName() , endTime, endTime-startTime);

return result ;

}

}

aop springboot 传入参数_Springboot添加AOP打印请求参数相关推荐

  1. aop springboot 传入参数_java相关:springboot配置aop切面日志打印过程解析

    java相关:springboot配置aop切面日志打印过程解析 发布于 2020-3-31| 复制链接 摘记: 这篇文章主要介绍了springboot配置aop切面日志打印过程解析,文中通过示例代码 ...

  2. java参数action_Struts2之Action接收请求参数和拦截器详解

    技术分析之在Struts2框架中使用Servlet的API 1. 在Action类中也可以获取到Servlet一些常用的API 需求:提供JSP的表单页面的数据,在Action中使用Servlet的A ...

  3. ios请求头解决参数中文乱码_解决请求参数的中文乱码问题(get、post)

    2018-11-28 在web请求与响应中,会遇到乱码问题,比如填写表单数据时,难免会输入中文,姓名.公司名称等.由于HTML设置了浏览器在传递请求参数时,采用的编码方式是UTF-8,但在解码时采用的 ...

  4. angular ajax get post 参数,AngularJS - $ http.post发送请求参数而不是JSON的任何方式?...

    AngularJS - $ http.post发送请求参数而不是JSON的任何方式? 我有一些旧的代码通过jQuery的post方法发出一个AJAX POST请求,看起来像这样:$.post(&quo ...

  5. aop springboot 传入参数_springboot用aop做参数校验

    /** * Created by 12274 on 2018/8/29. * 实现类所有方法入参校验 */ @Aspect @Component @Slf4j public class AopServ ...

  6. aop springboot 传入参数_Spring、SpringMVC和SpringBoot看这一篇就够了!

    一.概念 1.Spring Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系.其核心就是控制反转(IOC) ...

  7. boot spring 打印请求参数_SpringBoot打印请求参数与响应参数

    前言 使用Aop的环绕通知实现 加入依赖 org.projectlombok lombok org.springframework.boot spring-boot-starter-aop 编码 im ...

  8. express获取url路由地址参数的方法 获取get请求参数

    用express写接口我觉得是非常快的,直接集成好了. 下面来说说express获取路由地址参数的方法. var express=require('express'); var app=express ...

  9. python post请求参数错误_python爬虫 post请求 参数错误

    [Python] 纯文本查看 复制代码#!/usr/bin/env python # -*- coding: utf-8 -*- import requests def test_request(): ...

最新文章

  1. Nacos 1.3.0 发布, 全新内核构建
  2. java对象的访问定位_2、JVM-Java对象的创建、对象结构、对象访问定位-Go语言中文社区...
  3. (原)产品化:架构、过程管理
  4. javamail读取并发送完整的html页面
  5. java aop xml配置_spring AOP使用 xml配置
  6. c语言脸型图案,[转载]各种脸型的分析及修饰
  7. 机器学习实战 梯度上升 数学推导_机器学习全路线经典书籍
  8. 浅谈!important对CSS的重要性
  9. OpenERP 中的on_change方法总结
  10. 无锡太湖学院计算机科学与技术宿舍,无锡太湖学院宿舍怎么样
  11. python与html5_python前端HTML和CSS入门
  12. Windows 8 VHD 概述与使用
  13. 使用Qtip2来开发功能强大的删除和信息提示功能
  14. [网络安全自学篇] 九十三.《Windows黑客编程技术详解》之木马开机自启动技术(注册表、计划任务、系统服务)
  15. java -jar bat_java jar包和bat批处理命令
  16. 蓝桥杯2019c语言b组试题,2020年7月B组C++蓝桥杯真题试水
  17. ssh连接openwrt_如何将SSH无密码连接到OpenWrt路由器?
  18. 操作数组的一些常用方法及示例
  19. TI RTOS BLE NVS FLASH 驱动
  20. Xneomai 简介

热门文章

  1. .Net Core上用于代替System.Drawing的类库
  2. Mysql实现主从复制(一主双从)
  3. Android之提示Could not find com.android.support:appcompat-v7:25.3.1.
  4. Android之安卓8.0版本以上手机开启热点提示Caller already has an active LocalOnlyHotspot request
  5. C和指针之字符串编程练习10(判断字符串是否是回文数)
  6. C和指针之函数递归实现把amount表示的值转换为单词形式written_amount(unsigned int amount,char *buffer)
  7. linux c通过文件描述符以及write和read方法对文件进行读写
  8. Android之玩转选项卡(TabHost、TabWidget、FrameLayout)
  9. 【iVX 初级工程师培训教程 10篇文拿证】01 了解 iVX 完成新年贺卡
  10. 服务器2008 系统日志 提示打印机,介绍服务器日志出现打印机错误的解决方法