2010-11-11 24 views
12

Sto configurando un nuovo progetto JPA + Spring. Qual è la differenza (per me come programmatore) tra:Spring: gestore transazioni annotato

<tx:annotation-driven transaction-manager="transactionManager" /> 

e

<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager" /> 

nel mio applicationContext.xml?

risposta

28

C'è un'enorme differenza tra proxy e aspetti di codice byte. I proxy possono intercettare solo se l'invocazione proviene da "spazio esterno", ma non se l'invocazione proviene dall'oggetto stesso (this.transactionalMethod())

Ciò significa che se si dispone di una classe con due metodi, T e B Il metodo T ha un'annotazione della transazione e il metodo B invoca T per “this.T() ", quindi il proxy non viene mai richiamato (per T), in questo caso non viene gestita alcuna transazione!

Se si utilizza AspectJ il codice di gestione della transazione è weaven nel codice byte di T e verrà eseguito indipendentemente dall'invocazione provenire dall'oggetto stesso o da un altro oggetto.

+0

grazie mille per aver spiegato con parole chiare e semplici. –

6

The docs dire:

modalità processi

Il predefinite "proxy" fagioli da proxy utilizzando framework AOP Spring annotati (segue semantica del proxy, come discusso sopra, applicando il metodo chiamate in arrivo attraverso il proxy solo). La modalità alternativa "aspectj" invece intreccia le classi interessate con l'aspetto della transazione AspectJ di Spring, modificando il codice byte della classe di destinazione da applicare a qualsiasi tipo di chiamata di metodo. La tessitura di AspectJ richiede spring-aspects.jar nel classpath così come la tessitura del tempo di caricamento (o tessitura in tempo di compilazione) abilitata. (Vedere la Sezione 7.8.4.5, "Configurazione Spring" per dettagli su come impostare la tessitura del tempo di caricamento.)

Non importa (dal punto di vista dello sviluppatore) quale modalità verrà utilizzata.

+0

oh grazie. per qualche motivo non sono riuscito a trovare questa informazione. –

Problemi correlati