请教一下,为什么我定义一个环绕通知,会两次执行ProceedingJoinPoint.proceed方法 
配置 
<bean id="reviewAespect" class="com.aop.ReviewFilterAspect" autowire="byName"/> 
<aop:config> 
<aop:aspect ref="reviewAespect"> 
<aop:around pointcut="execution(* com.service.ReviewService.postReview(..))" 
method="validateReview"/> 
</aop:aspect> 
</aop:config> public class ReviewFilterAspect { public Object validateReview(ProceedingJoinPoint joinPoint) throws Throwable{ 
Review review = (Review)joinPoint.getArgs()[0]; 
System.out.println(review.getIp()); 
Object obj= null; 
obj = joinPoint.proceed(); return obj; 
} 运行的时候拦截postReview方法,为什么会两次执行validateReview里面的代码 

解决方案 »

  1.   

    看看是不是postReview方法的问题
      

  2.   

    ReviewService是个接口,这个方法会有什么问题,我测试就是返回一个0
      

  3.   

    debug一下吧,要不看看源代码
      

  4.   

             <aop:before pointcut-ref="myPointCut" method="doBefore" />方法前一次
                
             <aop:around method="doMehtod" pointcut-ref="myPointCut" />  环绕二次
                
              <aop:after pointcut-ref="myPointCut" method="doAfter" /> 方法后一次
      

  5.   

    around 顾名思义啊  楼主 两次呀
      

  6.   

    肯定了啊!要不你换MethodBeforeAdvice 或者是AfterReturningAdvice 试下