Enlace de referencia: https://juejin.im/post/6844904111050063879
Aquí hay un resumen de las ideas de implementación de transacciones en Spring. Spring se basa principalmente en TransactionInterceptor para interceptar el cuerpo del método de ejecución, determinar si abrir la transacción y luego ejecutar el cuerpo del método de transacción, capturar la excepción en el cuerpo del método y luego determinar si es necesario revertirlo, si es necesario revertirlo. Delegue el TransactionManager real, como el DataSourceTransactionManager en JDBC, para realizar la lógica de reversión. Lo mismo ocurre con la realización de una transacción.
Siete comportamientos de propagación de transacciones se definen en Spring:
Tipos de |
Descripción |
PROPAGATION_REQUIRED |
Si no hay ninguna transacción actualmente, cree una nueva transacción, si ya existe una transacción, únase a ella. Esta es la opción más común. |
PROPAGATION_SUPPORTS |
Admite la transacción actual, si no hay ninguna transacción actualmente, se ejecutará de manera no transaccional. |
PROPAGATION_MANDATORY |
Utilice la transacción actual, si no hay ninguna transacción actualmente, lance una excepción. |
PROPAGATION_REQUIRES_NEW |
Cree una nueva transacción. Si existe una transacción, suspenda la transacción actual. |
PROPAGATION_NOT_SUPPORTED |
Realizar operaciones de manera no transaccional, si hay una transacción en curso, la transacción en curso se suspende. |
PROPAGATION_NEVER |
Ejecutar de manera no transaccional. Si hay una transacción actualmente, se lanza una excepción. |
PROPAGATION_NESTED |
Si una transacción existe actualmente, se ejecuta dentro de una transacción anidada. Si no hay ninguna transacción actualmente, realice una operación similar a PROPAGATION_REQUIRED. |
Resumen: La ejecución en modo no transaccional en realidad está configurada como confirmación automática. Si hay varias operaciones en un método, cada operación se completará en una transacción diferente y no se garantizará su atomicidad.
https://blog.csdn.net/yanyuan904/article/details/80696159
Descripción general del mecanismo de gestión de transacciones de Spring
https://blog.csdn.net/justloveyou_/article/details/73733278