title: Spring AOP : Interface method with Parameter annotation captured, but annotation is not present
body: <p>I'm using Spring AOP to intercept a method execution.</p>
  
  <p>I have an interface that looks like the following:</p>
  
  <pre><code>public interface MyAwesomeService {
      public Response doThings(int id, @AwesomeAnnotation SomeClass instance);
  }
  </code></pre>
  
  <p>Here is the implementation of the interface:</p>
  
  <pre><code>public class MyAwesomeServiceImpl implements MyAwesomeService {
      public Response doThings(int id, SomeClass instance) {
          // do something.
      }
  }
  </code></pre>
  
  <p>Now i would like any method which has a parameter annotated with @AwesomeAnnotation should be captured by Spring AOP.</p>
  
  <p>So I wrote the following aspect which <em>works</em>.</p>
  
  <pre><code>@Aspect
  @Component
  public class MyAwesomeAspect {
      @Around("myPointcut()")
      public Object doAwesomeStuff(final ProceedingJoinPoint proceedingJoinPoint) {
           final MethodSignature methodSignature = (MethodSignature) proceedingJoinPoint.getSignature();
           Annotation[][] annotationMatrix = methodSignature.getMethod().getParameterAnnotations();
  
           // annotationMatrix is empty.
      }
  
      @Pointcut("execution(public * *(.., @package.AwesomeAnnotation  (package.SomeClass), ..))")
      public void myPointcut() {}
  }
  </code></pre>
  
  <p>However when I try to find the parameter annotations I don't get any annotations back. As mentioned above, the annotationMatrix is empty.</p>
  
  <p>So here are my questions:</p>
  
  <ol>
  <li>Why is the annotationMatrix empty? Probably because parameter annotations are not inherited from an interface.</li>
  <li>Why I'm able to capture the method execution. Since Spring AOP is able match the pointcut, Spring somehow is able to see the method's parameter annotations but when I try to see that using <code>methodSignature.getMethod().getParameterAnnotations()</code> it doesn't work.</li>
  </ol>