Lorsque vous appelez une méthode sans @Transactional
dans un bloc de transaction, la transaction parente continuera avec la nouvelle méthode. Il utilisera la même connexion à partir de la méthode parente (avec @Transactional
) et toute exception provoquée dans la méthode appelée (sans @Transactional
entraîner la restauration de la transaction comme configuré dans la définition de transaction.
Si vous appelez une méthode avec une @Transactional
annotation à partir d'une méthode @Transactional
dans la même instance, le comportement transactionnel des méthodes appelées n'aura aucun impact sur la transaction. Mais si vous appelez une méthode avec une définition de transaction à partir d'une autre méthode avec une définition de transaction, et qu'ils sont dans des instances différentes, le code de la méthode appelée suivra les définitions de transaction données dans la méthode appelée.
Vous pouvez trouver plus de détails dans la section Gestion des transactions déclaratives de la documentation des transactions de printemps .
Le modèle de transaction déclarative Spring utilise le proxy AOP. le proxy AOP est donc responsable de la création des transactions. Le proxy AOP ne sera actif que si les méthodes avec dans l'instance sont appelées depuis l'extérieur de l'instance.