La documentazione Spring consiglia di inserire l'annotazione @Transactional sulla classe/metodo concreto anziché sull'interfaccia. La ragione di questo è stato coperto su Stack Overflow molte volte, ad esempio:Spring @Transactional v Spring Security @ Comportamento incoerente protetto
Primavera di sicurezza comportamento @Secured diverso; la maggior parte della documentazione mostra l'inserimento dell'annotazione nell'interfaccia. In effetti sembra funzionare se annoti l'interfaccia o la classe concreta e indipendentemente dal fatto che tu usi i proxy JDK o CGLib.
Questa sembra una soluzione superiore. Allora, perché l'incoerenza? Una risposta alla domanda di cui sopra suggerisce un impatto sulle prestazioni ... ma sicuramente le prestazioni sono altrettanto importanti per la sicurezza ?!
E come fa l'affare soluzione @Secured il problema diamante eredità (classe implementa 2 interfacce entrambi hanno @Secured stesso metodo in modo diverso)?