(入门SpringBoot)SpringBoot加接口操作日志好方法(九)
2024-10-19 01:30:41
用Spring的切面去做,慕课网上的大神的小妙招,被我拷贝下来了。
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; /**
* 作用实现拦截http请求.
*/
@Aspect
@Component //把这个文件引入到Spring容器里面去.
public class HttpAspect {
@Pointcut("execution(public * com.account.demo.controller.*.*(..))")
public void log(){ }
/**
* 拦截那些方法.请求前.
* JoinPoint 获取类方法和类名对象.
*/
@Before("log()")
public void logBefore(JoinPoint joinPoint){
System.out.println("拦截了getInfo方法");
//url,method,ip,类方法,参数.
//SpringBoot通过RequestContextHolder获取HttpRequest和HttpResponse
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//javax.servlet.http.HttpServletRequest
HttpServletRequest request = attributes.getRequest();
System.out.println("url"+request.getRequestURL());
System.out.println("method"+request.getMethod());
System.out.println("ip"+request.getRemoteAddr());
//类方法.
System.out.println("类方法"+joinPoint.getSignature().getDeclaringTypeName()
+"."+ joinPoint.getSignature().getName()
);
//参数:
System.out.println("类方法"+joinPoint.getArgs());
}
/**
* 拦截那些方法.请求后.
*/
@After("log()")
public void logAfter(){
System.out.println("拦截了getInfo方法.之后");
} /**
* 返回参数.
* @param object 入参
*/
@AfterReturning(returning = "object",pointcut = "log()")
public void doAfterReturning(Object object){
System.out.println(object);
}
}
最新文章
- C# basic
- DFX 安全测试-- 告诉你什么是XSS、sql注入?POST和GET的区别....
- 53. Android常用工具类
- js 设置Cookie 在PHP中读取(大师手法)
- Redis笔记(二)Redis的部署和启动
- C语言有字符串这种数据类型吗?
- 编译gcc4.7.3 其他版本的应该也可以
- 修改MDI工程主框架窗口标题(修改CREATESTRUCT结构体)
- Android Handler传递参数动态更新UI界面demo
- XP系统VPN设置
- css 动画 transform transition animation
- jquery ajax 在ie7不能正常使用
- [译]Java 设计模式之外观
- jsp上的九个隐含对象
- 2015 多校联赛 ——HDU5299(树删边)
- 利用BGP虚拟下一跳实现链路负载均衡
- 部署Redis4.x单机版及配置RDB和AOF持久化
- 2018haoi总结
- 须知的css——margin不重叠的情形
- Android ";Please ensure that adb is correctly located at"; 错误
热门文章
- 如何实现一台服务器同时运行两个php版本
- C# sync/async 同步/异步
- Vscode LeetCode 教程
- 【mail邮件系统】linux上安装部署sendmail邮件系统
- WPF使用FlowDocument实现图文混排
- 使用create-react-app+react-router-dom+axios+antd+react-redux构建react项目
- OSG嵌入QT的简明总结
- [转]自定义UiPath Activity实践
- Mac环境下执行npm install报权限错误解决办法
- Oracle 11gR2中HR用户安装说明