title: Before advice getting executed twice...same join point listed twice for same method so it gets called twice
body: <p>We're implemented "before" advice using custom annotations so as to only execute certain methods if the (uninteresting to this problem) business logic applies.</p>
  
  <p>We're seeing the aspect called twice for each invocation of the method.  </p>
  
  <p>Debugging into it I see <code>Cglib2AopProxy$CglibMethodInvocation.proceed</code> has an array called:  <code>interceptorsAndDynamicMethodMatchers</code>.  This array lists our <code>PointCut ("RequiresX")</code> twice.</p>
  
  <p>Here is the join point:</p>
  
  <pre><code>@Before(@annotation(requiresX)”)
  public Object process(ProceedingJoinPoint joinPoint, RequiresACL requiresX) throws Throwable
  {
      Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
      log.info(" method:" + method.getName());
  
      // do business logic of the aspect…
  
      log.info(" joinPoint.proceed with call to " + method.getName());
   }
  </code></pre>
  
  <p>and here is our custom annotation</p>
  
  <pre><code>@Retention(RetentionPolicy.RUNTIME)
  @Target(ElementType.Method)
  public @interface RequiresX {
  }
  </code></pre>
  
  <p>and here is a method we can to intercept:</p>
  
  <pre><code>@RequiresX()
  public String someMethod() {    
      ....
  }
  </code></pre>
  
  <p>This seems pretty vanilla but clearly I've done something wrong.  Any suggestions on how to only execute the advice once per call would be greatly appreciated.</p>