Tengo un código heredado que ahora estoy tratando de volver a utilizar en primavera. Este código está profundamente anidado en otro código, por lo que no es práctico rediseñarlo y se lo llama en muchas situaciones, algunas de las cuales solo se realizan a través de Spring. Lo que me gustaría hacer es utilizar la transacción de Spring si se ha iniciado una; de lo contrario, continúe utilizando el mecanismo de conexión de db existente (heredado). Nuestro primer pensamiento fue hacer de nuestra clase heredada un frijol y usar un TransactionPlatformManager
inyectado, pero eso no parece tener ningún método relacionado con nuestra situación. Algunas investigaciones mostraron que Spring tiene una clase llamada TransactionSynchronizationManager
que tiene un método estático isActualTransactionActive()
. Mi prueba indica que este método es una manera confiable de detectar si una transacción primavera está activo:¿Existe una forma mejor de detectar si una transacción Spring DB está activa que usar TransactionSynchronizationManager.isActualTransactionActive()?
- Cuando llama a través del servicio de primavera sin el
@Transactional
anotación, devuelve falso - Cuando llama a través del servicio de primavera con
@Transactional
, devuelve verdadera - En mi método heredado llamado el camino existente, devuelve falso
mi pregunta: ¿hay una mejor manera de detectar si una transacción está activo?
¡Gracias! Eso es perfecto. – fool4jesus