Update
Since it appears that it cannot be done in Spring (see original answer) I would say that you need to add the annotation to each method on the implementing classes. There is an obvious way to do this, but I suppose if you are looking for a more automatic way you will need to write one yourself.
I can imagine some sort of home-grown post-processor that will look for a specific annotation, lets say @ApplyThisAnnotationToAllWhoInheritMe
. Once it finds this annotation, it would scan sourcecode for inheriting members and add the requested annotation where necessary before compilation happens.
Regardless, if you are using Spring AOP to do this, it appears that it needs to be on the implementers method. If the classes you are hoping this will help are out of your control, you may have to write your own Spring AOP tool.
Original Answer
From the Spring 3.0 Documentation:
AspectJ follows Java's rule that annotations on interfaces are not inherited.
I found this bit in section 7.8.2 Other Spring aspects for AspectJ
, which is a part of 7.8 Using AspectJ with Spring applications
, which makes me think this is a global rule.