Apparently, when a request pattern is mapped to a method via the @RequestMapping
annotation, it is mapped to to the concrete method implementation. So a request that matches the declaration will invoke GoalServiceImpl.removeGoal()
directly rather than the method that originally declared the @RequestMapping
ie GoalService.removeGoal()
.
Since an annotation on an interface, interface method, or interface method parameter does not carry over to the implementation there is no way for Spring MVC to recognize this as a @PathVariable
unless the implementing class declares it explicitly. Without it, any AOP advice that targets @PathVariable
parameters will not be executed.