aop springboot 传入参数_Springboot添加AOP打印请求参数
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打印请求参数相关推荐
- aop springboot 传入参数_java相关:springboot配置aop切面日志打印过程解析
java相关:springboot配置aop切面日志打印过程解析 发布于 2020-3-31| 复制链接 摘记: 这篇文章主要介绍了springboot配置aop切面日志打印过程解析,文中通过示例代码 ...
- java参数action_Struts2之Action接收请求参数和拦截器详解
技术分析之在Struts2框架中使用Servlet的API 1. 在Action类中也可以获取到Servlet一些常用的API 需求:提供JSP的表单页面的数据,在Action中使用Servlet的A ...
- ios请求头解决参数中文乱码_解决请求参数的中文乱码问题(get、post)
2018-11-28 在web请求与响应中,会遇到乱码问题,比如填写表单数据时,难免会输入中文,姓名.公司名称等.由于HTML设置了浏览器在传递请求参数时,采用的编码方式是UTF-8,但在解码时采用的 ...
- angular ajax get post 参数,AngularJS - $ http.post发送请求参数而不是JSON的任何方式?...
AngularJS - $ http.post发送请求参数而不是JSON的任何方式? 我有一些旧的代码通过jQuery的post方法发出一个AJAX POST请求,看起来像这样:$.post(&quo ...
- aop springboot 传入参数_springboot用aop做参数校验
/** * Created by 12274 on 2018/8/29. * 实现类所有方法入参校验 */ @Aspect @Component @Slf4j public class AopServ ...
- aop springboot 传入参数_Spring、SpringMVC和SpringBoot看这一篇就够了!
一.概念 1.Spring Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系.其核心就是控制反转(IOC) ...
- boot spring 打印请求参数_SpringBoot打印请求参数与响应参数
前言 使用Aop的环绕通知实现 加入依赖 org.projectlombok lombok org.springframework.boot spring-boot-starter-aop 编码 im ...
- express获取url路由地址参数的方法 获取get请求参数
用express写接口我觉得是非常快的,直接集成好了. 下面来说说express获取路由地址参数的方法. var express=require('express'); var app=express ...
- python post请求参数错误_python爬虫 post请求 参数错误
[Python] 纯文本查看 复制代码#!/usr/bin/env python # -*- coding: utf-8 -*- import requests def test_request(): ...
最新文章
- Nacos 1.3.0 发布, 全新内核构建
- java对象的访问定位_2、JVM-Java对象的创建、对象结构、对象访问定位-Go语言中文社区...
- (原)产品化:架构、过程管理
- javamail读取并发送完整的html页面
- java aop xml配置_spring AOP使用 xml配置
- c语言脸型图案,[转载]各种脸型的分析及修饰
- 机器学习实战 梯度上升 数学推导_机器学习全路线经典书籍
- 浅谈!important对CSS的重要性
- OpenERP 中的on_change方法总结
- 无锡太湖学院计算机科学与技术宿舍,无锡太湖学院宿舍怎么样
- python与html5_python前端HTML和CSS入门
- Windows 8 VHD 概述与使用
- 使用Qtip2来开发功能强大的删除和信息提示功能
- [网络安全自学篇] 九十三.《Windows黑客编程技术详解》之木马开机自启动技术(注册表、计划任务、系统服务)
- java -jar bat_java jar包和bat批处理命令
- 蓝桥杯2019c语言b组试题,2020年7月B组C++蓝桥杯真题试水
- ssh连接openwrt_如何将SSH无密码连接到OpenWrt路由器?
- 操作数组的一些常用方法及示例
- TI RTOS BLE NVS FLASH 驱动
- Xneomai 简介
热门文章
- .Net Core上用于代替System.Drawing的类库
- Mysql实现主从复制(一主双从)
- Android之提示Could not find com.android.support:appcompat-v7:25.3.1.
- Android之安卓8.0版本以上手机开启热点提示Caller already has an active LocalOnlyHotspot request
- C和指针之字符串编程练习10(判断字符串是否是回文数)
- C和指针之函数递归实现把amount表示的值转换为单词形式written_amount(unsigned int amount,char *buffer)
- linux c通过文件描述符以及write和read方法对文件进行读写
- Android之玩转选项卡(TabHost、TabWidget、FrameLayout)
- 【iVX 初级工程师培训教程 10篇文拿证】01 了解 iVX 完成新年贺卡
- 服务器2008 系统日志 提示打印机,介绍服务器日志出现打印机错误的解决方法