不同通知类型获得参数、返回值、返回异常
创始人
2024-06-02 22:23:28

不同通知类型获得参数、返回值、返回异常:

在这里插入图片描述

参数:

前置后置,异常后,成功运行后:方法中参数写JoinPoint joinPoint,使用joinPoint调用方法,getArgs()方法返回的是测试类那边传进来的参数,被这个方法打包成数组类型放入Object类型的数组中,然后用打印Arrays.toString(args)就可以知道传进来的参数是啥

    @Before("pt()")public void before(JoinPoint joinPoint) throws Throwable{Object[] args=joinPoint.getArgs();System.out.println(Arrays.toString(args));}

环绕型就有所不同:方法中的参数用ProceedingJoinPoint joinPoint,其余都一样样;对了ProceedingJoinPoint还包含一个方法,其方法的参数就是args,所以这里就可以直接把args数组传进去,然后joinPoint.proceed(args)调用执行当前的实体类方法

@Around("pt()")public Object arounddd(ProceedingJoinPoint joinPoint) throws Throwable {Object[] args=joinPoint.getArgs();Object proceed=joinPoint.proceed(args);return proceed;}

但是这个参数可以进行修改,将得到的参数改一下,如令args[0]等于一个别的值,参数就变了,再次执行joinPoint.proceed(args)时,其中的参数就变成了别的,于是最后结果,返回的也是别的参数相对应的结果

 @Around("pt()")public Object arounddd(ProceedingJoinPoint joinPoint) throws Throwable {Object[] args=joinPoint.getArgs();args[0]=6;Object proceed=joinPoint.proceed(args);return proceed;}

返回值

  • @AfterReturning成功运行后:注解@AfterReturning(value = “pt()”,returning = “args”),其中表示返回值,再方法中参数也写args,与注解中的参数保持一致即可,最终打印的args就是实体类返回的值,(与环绕方法不同的是他不用在方法中加载进实体类的方法,直接利用注解中的returning参数就可以打印出实体类的返回值,当然也得实体类不是void返回型才可以)
 @AfterReturning(value = "pt()",returning = "args")public void show(Object args){System.out.println(args);}

返回异常

@AfterThrowing:和上面的成功后返回返回值的用法一样
其他的通知类型就直接在方法内使用try{} catch(){}打印就行

    @AfterThrowing(value = "pt()",throwing = "args")public void pp(Throwable args){System.out.println(args);}

相关内容

热门资讯

伊朗高官称美军超过500人丧生 伊朗最高国家安全委员会秘书拉里贾尼3月4日在社交平台上发文说,已有超过500名美国军人死于美国和以色...
又有470余名中国公民安全撤离   新华社电 外交部发言人毛宁3月4日表示,自伊朗安全形势紧张以来,中方已多次向有关方面提出交涉,要...
宜君县把岗位送到家门口   本报讯 (通讯员 赵建华)为扎实做好春节后稳就业保民生工作,近日,宜君县正式启动2026年“春风...
中国工程机械领军企业亮相北美最...   新华社美国拉斯维加斯3月3日电 (记者 谭晶晶 黄恒)北美规模最大的工程机械行业展会——拉斯维加...
食品核查处置“1350”机制试... (来源:中国消费者报)  本报福州讯(记者张文章)近日,市场监管总局2026年创新试点项目——福建省...