Обновить
Поскольку кажется, что это невозможно сделать в Spring (см. исходный ответ), я бы сказал, что вам нужно добавить аннотацию к каждому методу реализующих классов. Есть очевидный способ сделать это, но я полагаю, что если вы ищете более автоматический способ, вам нужно будет написать его самостоятельно.
Я могу представить себе какой-нибудь самодельный постпроцессор, который будет искать определенную аннотацию, скажем, @ApplyThisAnnotationToAllWhoInheritMe
. Как только он найдет эту аннотацию, он просканирует исходный код для наследования элементов и добавит запрошенную аннотацию, где это необходимо, до того, как произойдет компиляция.
Независимо от того, если вы используете Spring AOP для этого, кажется, что он должен быть в методе реализации. Если классы, которые, как вы надеетесь, помогут, находятся вне вашего контроля, возможно, вам придется написать собственный инструмент Spring AOP.
Исходный ответ
Из документации Spring 3.0 :
AspectJ следует правилу Java, согласно которому аннотации на интерфейсах не наследуются.
Я нашел этот бит в разделе 7.8.2 Other Spring aspects for AspectJ
, который является частью 7.8 Using AspectJ with Spring applications
, что заставляет меня думать, что это глобальное правило.
person
nicholas.hauschild
schedule
24.08.2011