@AfterReturning(pointcut="bizPoint()",returning="returnValue") 这里说的bizPoint()是业务逻辑中的类的方法,还是“切入点”

来源:7-2 Advice定义及实例

抗货产品汪

2014-11-30 14:12

@AfterReturning(pointcut="bizPoint()",returning="returnValue")

在前面的ppt中: 

    pointcut=“业务逻辑下的类的方法(以前说的切入点)”

在现在的代码中  

    pointcut="bizPoint()"如果我把这个bizPoint()方法理解为ppt中所说的业务逻辑中的类的方法,那可以看到,这个方法的返回值是空的,returning就没有意义。

    所以应该吧bizPoint()理解为你说的“切入点”(以前认为的切面),returning是这个“切入点”操作的业务逻辑类中方法的返回值,那么问题又来了,要是这个“切入点”切的类中有多个方法 ,这些方法都有返回值,那returning又是什么呢?????

写回答 关注

4回答

  • moocer
    2014-11-30 21:56:44
    已采纳

    1.这里的可以把这里public void pointcut() {}方法理解成具体pointcut(切入点)的声明,实际对应的切入点是“execution(* com.imooc.aop.aspectj.biz.*Biz.*(..))”;

    2.@AfterReturning,是在返回后执行,returning="returnValue"的“returnValue”就是具体的方法(* com.imooc.aop.aspectj.biz.*Biz.*(..))的返回值,对应public void afterReturning(Object returnValue)
    的方法参数,名称一定要对应,在方法返回后,可以进行一些操作,比如输出返回值或者根据返回值进行一些操作。


    这样解释,不知道你清楚了没有

    moocer

    不用客气,弄明白最重要。

    2014-12-05 19:25:21

    共 2 条回复 >

  • moocer
    2014-11-30 22:00:06

    1.可以把public void pointcut() {}理解成具体切入点@Pointcut("execution(* com.imooc.aop.aspectj.biz.*Biz.*(..))")的声明;

    2.@AfterReturning(pointcut="bizPointcut()", returning="returnValue")是在具体业务方法返回后的操作,所以returning="returnValue"对应的是业务方法 的返回值,不是切入点声明的返回值,且要与public void afterReturning(Object returnValue)的参数名称对应。

    不知道这样解释你明白了没有

  • moocer
    2014-11-30 21:59:26

    1.可以把public void pointcut() {}理解成具体切入点@Pointcut("execution(* com.imooc.aop.aspectj.biz.*Biz.*(..))")的声明;

    2.@AfterReturning(pointcut="bizPointcut()", returning="returnValue")是在具体业务方法返回后的操作,所以returning="returnValue"对应的是业务方法的返回值,不是切入点声明的返回值,且要与public void afterReturning(Object returnValue)的参数名称对应。

    不知道这样解释你明白了没有

  • fafafafdsafafa
    2016-04-05 11:46:29

    我也清楚了。谢谢

Spring入门篇

为您带来IOC和AOP的基本概念及用法,为后续高级课程学习打下基础

268786 学习 · 963 问题

查看课程

相似问题