Spring Aop 获取入参和出参
Spring Aop 获取入参和出参
1. 概述
本次,我利用 Spring Aop 的注解方式获取切入点的入参和出参,因为比较简单,所以就直接上代码了。
2. 代码编写
注解类
/*** 日志注解** @author Jiantao Yan* @title: Log* @date 2021/1/5 20:33*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {}
切入点
/*** AOP 切入点测试** @author Jiantao Yan* @title: AopService* @date 2021/1/5 20:29*/
@Slf4j
@Service
public class AopService {@Logpublic User save(User user) {log.info("------>save user={}", user);return user;}
}
切面
/*** 日志切面** @author Jiantao Yan* @title: LogAspect* @date 2021/1/5 20:33*/
@Slf4j
@Aspect
@Component
public class LogAspect {/*** 以注解为切入点*/@Pointcut("@annotation(com.tao.leanrn.demo.aop.Log)")public void pointcut() {}/*** 环绕通知* @param proceedingJoinPoint*/@SneakyThrows@Around("pointcut()")public void around(ProceedingJoinPoint proceedingJoinPoint) {// 获取入参Object[] args = proceedingJoinPoint.getArgs();for (Object arg : args) {// 入参是否为 userif (arg instanceof User) {log.info("------->入参为user={}", (User)arg);}log.info("----->入参 arg={}", arg);}// 获取出参Object result = proceedingJoinPoint.proceed();// 出参是否为 userif (result instanceof User) {log.info("------->入参为user,result={}", (User)result);}log.info("----->出参.result={}", result);}
}
实体类
/*** 用户** @author Jiantao Yan* @title: User* @date 2021/1/5 20:30*/
@Data
public class User {private Long id;private String username;private Integer age;
}
3. 结果验证
单元测试编写
@Slf4j
@SpringBootTest
class AopServiceTest {@Autowiredprivate AopService aopService;@Testvoid save() {User user = new User();user.setId(1L);user.setAge(19);user.setUsername("booleandev");User user1 = aopService.save(user);log.info("------------->user1={}", user1);}
}
结果
2021-01-05 21:01:13.759 INFO 7440 --- [ main] com.tao.leanrn.demo.aop.LogAspect : ------->入参为user=User(id=1, username=booleandev, age=19)
2021-01-05 21:01:13.774 INFO 7440 --- [ main] com.tao.leanrn.demo.aop.LogAspect : ----->入参 arg=User(id=1, username=booleandev, age=19)
2021-01-05 21:01:13.786 INFO 7440 --- [ main] com.tao.leanrn.demo.aop.AopService : ------>save user=User(id=1, username=booleandev, age=19)
2021-01-05 21:01:13.787 INFO 7440 --- [ main] com.tao.leanrn.demo.aop.LogAspect : ------->入参为user,result=User(id=1, username=booleandev, age=19)
2021-01-05 21:01:13.787 INFO 7440 --- [ main] com.tao.leanrn.demo.aop.LogAspect : ----->出参.result=User(id=1, username=booleandev, age=19)
2021-01-05 21:01:13.787 INFO 7440 --- [ main] com.tao.leanrn.demo.aop.AopServiceTest : ------------->user1=null
Spring Aop 获取入参和出参相关推荐
- spring aop自定义切面打印入参和出参,以及切面获取注解的字段值.
controller代码 @ApiOperation(value = "检查是否有兑换次数", response = Boolean.class)@ApiImplicitParam ...
- aop 获取方法入参出参_ASM字节码编程 | JavaAgent+ASM字节码插桩采集方法名称及入参和出参结果并记录方法耗时...
作者:小傅哥 博客:bugstack.cn ❝ 沉淀.分享.成长,让自己和他人都能有所收获! ❞ 一.前言 在我们实际的业务开发到上线的过程中,中间都会经过测试.那么怎么来保证测试质量呢?比如:提交了 ...
- AOP注解@Before、@AfterReturning拦截单个方法的入参和出参,纯注解方式(附源码下载),解决单个方法不生效问题(一)
AOP注解@Before.@AfterReturning拦截单个方法的入参和出参,纯注解方式(附源码下载),解决单个方法不生效问题(一) 问题背景 AOP注解@Before.@AfterReturni ...
- springAOP切面获取入参和出参
老版及参考 https://blog.csdn.net/weixin_33859504/article/details/86997374 新版**** package core.interceptor ...
- 彻底解决spring mvc XSS漏洞问题(包括json的格式的入参和出参)
目录 一,背景 二,名词解释 三,xss修复的一般处理方法 四.扩展jackson定制自己的objectMapper处理json出入参的转义 五.结语 一,背景 昨天收到公司安全部的一封漏洞邮件,说系 ...
- Java接口入参和出参规范建议
把最近项目中遇到的问题跟大家分享下:最近做了一个项目,后端接口写好后和pc端vue联调完毕,业务还需要和App端[ios,andro]对接,问题来了,后端接口中的入参和出参都是Java数据类型[Dat ...
- ASM字节码编程 | JavaAgent+ASM字节码插桩采集方法名称以及入参和出参结果并记录方法耗时
作者:小傅哥 博客:bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 在我们实际的业务开发到上线的过程中,中间都会经过测试.那么怎么来保证测试质量呢?比如:提交了多少代码 ...
- Java基础学习总结(168)——为什么推荐在RPC的接口中入参和出参都不要使用枚举
前言: 为什么推荐在RPC的接口中入参和出参都不要使用枚举.最近,我们的线上环境出现了一个问题,线上代码在执行过程中抛出了一个IllegalArgumentException,分析堆栈后,发现最根本的 ...
- Swagger对自定义入参和出参(过滤器)的支持
_ 这是之前文章 <在asp.net core 下定义统一的入参和出参格式>的高阶应用篇,由于增加了框架级别的入参和出参定义,导致swagger无法识别外部的定义,仅仅识别为控制器方法的定 ...
最新文章
- nagios视频教程【原创】
- 每日一皮:老大爷,您保持年轻的秘诀是什么
- 牛客题霸 NC15 求二叉树的层序遍历
- bzoj2538: [Ctsc2000]公路巡逻
- oracle 有计划任务吗,oracle计划任务的问题
- kafka告警简单方案
- linux 按日期复制文件夹,Linux 按文件日期分类文件
- 微信上传图文素材接口报41005错误解决方法
- 机器学习入门笔记(七):聚类
- ICMPv6报文详解
- 浅析pc机上如何将vmlinuz-2.6.31-14-generic解压出vmlinux
- 常用开源 SLAM 方案
- C++:向函数传递对象(对象、对象指针、对象引用)
- vfp报表打印到PDF文件中不用输入文件名
- 微信网页第三方登录原理
- rails中关于carrierwave、kaminari、roo组件分享
- 石家庄建工科技学院有计算机专业吗,石家庄建工科技学院官网
- 电压源和电流源的区别
- ARM64开发板配置Java环境 OrangePi
- 中国大学 MOOC Android 性能优化:冷启动优化总结