Aggiornamento
Poiché sembra che non possa essere fatto in primavera (vedi risposta originale) direi che è necessario aggiungere l'annotazione a ciascun metodo sulle classi di attuazione. C'è un modo ovvio per farlo, ma suppongo che se stai cercando un modo più automatico, dovrai scriverne uno tu stesso.
Posso immaginare una sorta di post-processor cresciuto in casa che cercherà un'annotazione specifica, diciamo @ApplyThisAnnotationToAllWhoInheritMe
. Una volta trovata questa annotazione, esegue la scansione del codice sorgente per i membri ereditari e aggiunge l'annotazione richiesta, laddove necessario, prima che avvenga la compilazione.
Indipendentemente da ciò, se si utilizza Spring AOP per farlo, sembra che sia necessario utilizzare il metodo Implementers. Se le lezioni che speri ti aiuteranno saranno fuori dal tuo controllo, potresti dover scrivere il tuo strumento Spring AOP.
risposta originale
Dal Spring 3.0 Documentation:
AspectJ segue la regola di Java che le annotazioni sulle interfacce non vengono ereditati.
Ho trovato questo bit nella sezione 7.8.2 Other Spring aspects for AspectJ
, che è una parte di 7.8 Using AspectJ with Spring applications
, che mi fa pensare questa è una regola globale.
fonte
2011-08-24 16:26:18
Grazie; questo spiega perché il mio collegamento non funziona. Comunque, sto cercando uno che funzioni. :-) –
@hstoerr: Dopo aver modificato la tua domanda, ho modificato la mia risposta. Fammi sapere se è ancora inaccettabile. –
La documentazione di primavera in realtà non dice che è impossibile abbinare su qualcosa di simile a quello che voglio - solo che il semplice approccio che ho provato non funziona. Ci potrebbe essere qualche cosa strana che si possa fare in Aspectj a cui non riesco a pensare. Quindi spero ancora. :-) –