Spring AOP切面的执行顺序

         Spring配置当中可以指定一个order的值,网络大部分回答都是order值越小,越先执行,这样的说法相对于切面来说没问题,但感觉十分的片面,通常在我们的实际业务当中,一个method既有前切,又有后切,那么相对于我们整个业务流程来说的执行顺序又是怎么样呐?

        


  • 这是在xml配置的对同一个切点的oder顺序







       



  • beforeInterceptorOne
        handleBeforeInterceptorOne(user)
    
        User user = (User) invocation.proceed()
    
        
  • beforeInterceptorTwo
        handleBeforeInterceptorTwo(user)
    
        User user = (User) invocation.proceed()
    

  • afterInterceptorOne
        User user = (User) invocation.proceed()
    
        handleAfterInterceptorOne(user)
    
  • afterInterceptorTwo
        User user = (User) invocation.proceed()
    
        handleAfterInterceptorTwo(user)
    

    通过实际的运行程序,我们的trace显示执行顺序如下:

                                   Spring AOP切面的执行顺序_第1张图片


总结:

  1.  oder的优先级顺序针对切面和切入方法来说是越小越先执行。
     
  2. spring aop就是一个同心圆,要执行的方法为圆心,最外层的order最小。
    参考:https://blog.csdn.net/hxpjava1/article/details/55504513

你可能感兴趣的:(spring,java,ide,groovy)