Voglio sapere che cosa succede realmente quando annoti un metodo con @Transactional
? Ovviamente, so che Spring avvolgerà quel metodo in una Transazione.Spring - @Transactional - Cosa succede in background?
Ma, ho i seguenti dubbi:
- ho sentito che la primavera crea una classe procura? Qualcuno può spiegare questo in più profondità. Che cosa risiede effettivamente in quella classe proxy? Cosa succede alla classe attuale? E come posso vedere Classe Proxied creato Primavera
- ho letto anche in documenti di primavera che:
Nota: Dal momento che questo meccanismo si basa sulle deleghe, unico metodo 'esterna' chiamate provenienti attraverso il proxy verrà intercettato. Ciò significa che "autoinvocazione", cioè un metodo all'interno dell'oggetto target che chiama un altro metodo dell'oggetto target, non porterà a una transazione effettiva in fase di esecuzione anche se il metodo richiamato è contrassegnato con
@Transactional
!
Fonte: http://static.springsource.org/spring/docs/2.0.x/reference/transaction.html
Perché solo le chiamate di metodo esterne sarà sotto delle transazioni e non i metodi di auto-invocazione?
La discussione pertinente è disponibile qui: http://stackoverflow.com/questions/3120143/where-should-i-put-transactional-annotation-at-an-interface-definition-or-at/an2031323#3120323 –