Comment obtenir instance de gestionnaire de transactions Spring?
-
29-09-2019 - |
Question
J'utilise des annotations aux méthodes de marquage qui doivent être exécutées dans une transaction.
Mais, en un seul endroit que je dois faire transactionManager.rollback()
manuellement, sans annotation. Comment puis-je obtenir l'objet transactionManager
?
La solution
Si vous voulez annuler la transaction en cours, vous pouvez utiliser
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
Notez qu'il ne rollback pas la transaction immédiatement - il définit le statut « rollback seulement », de sorte que la transaction sera annulée lors de la tentative de commettre.
Dans le cas contraire, si vous avez besoin d'une demaracation programmatique des transactions, vous pouvez utiliser
TransactionTemplate
, comme décrit dans 10.6 gestion des transactions Programmatic.
Vous pouvez également obtenir une instance de PlatformTransactionManager
, mais il est peu utilisé depuis TransactionTemplate
est une approche recommandée pour demaracation programmatique des transactions.
Voir aussi:
Autres conseils
Si votre objet est configuré par Spring vous pouvez bien sûr injecter un TransactionManager en elle ...