2010-11-09 14 views
14

Sono stato alle prese con questo per un paio d'ore.Configurazione della transazione per il contesto configurato Spring Java

Sto provando a migrare la mia configurazione Spring XML a una configurazione completa basata su Java.

Sto usando AnnotationConfigApplicationContext come implementazione del contesto.

sto avendo problemi a trovare un equivalente Java per questa linea, dal mio vecchio configurazione XML:

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

Di conseguenza, Primavera non gestisce le transazioni.

Nella mia configurazione Java ho inizializzato i bean rilevanti per le transazioni: la factory di sessione, il gestore delle transazioni, ecc., Ma senza quella riga, non viene utilizzato alcun proxy di transazione, quindi nessuna transazione è effettivamente in atto.

Quindi la mia domanda è: come posso tradurre quella linea nella mia configurazione del contesto Java o come posso risolvere il problema in un altro modo.

Qualsiasi aiuto è apprezzato. Grazie.

risposta

2

Nella mia esperienza, non è pratico sostituire completamente la configurazione XML con la configurazione @Bean. Alcune cose hanno più senso configurate in java, in particolare le tue definizioni di bean. Ma quando si tratta di dichiarazioni di tipo infrastrutturale come <tx:annotation-driven>, la sintassi XML è molto più concisa.

È possibile riprodurre lo stesso effetto in puro Java, ma finisce per essere ingombrante e poco intuitivo, in quanto le cose come sono in genere <tx:annotation-driven> interazioni di basso livello le classi di infrastruttura Primavera complessi che davvero non si vuole toccare.

Il mio consiglio: mescolare e abbinare, utilizzando ciascuno di Java e XML per i propri punti di forza. Questo è abbastanza facile da fare. Preferisco mantenere le normali classi XML ApplicationContext e quindi dichiarare le mie classi @Configuration come bean in quel contesto XML, insieme a cose come <tx:annotation-driven>.

+0

Avete ancora la pensano così ora, 4 anni più tardi, @skaffman? – GaZ

+1

No, non la penso così. Lo stile di annotazione è notevolmente più ricco nelle versioni Spring moderne rispetto alla primavera 3. – skaffman

+0

Grazie per l'aggiornamento. Questo è quello che sospettavo. Stiamo tentando di aggiornare il nostro codice legacy alla Spring 4 e, come parte di tale processo, vorrei eliminare la maggior parte possibile della nostra configurazione XML (purché abbia senso, ovviamente, ma ritengo che nella maggior parte dei casi il l'approccio basato sull'annotazione è una scelta migliore). – GaZ

Problemi correlati