Mam trochę starszego kodu, który próbuję ponownie użyć pod wiosną. Ten kod jest głęboko zagnieżdżony w innym kodzie, więc nie jest praktyczny do przeprojektowania i jest wywoływany w wielu sytuacjach, z których tylko niektóre są przez Spring. Chciałbym skorzystać z transakcji wiosennej, jeśli została rozpoczęta; w przeciwnym razie kontynuuj korzystanie z istniejącego (starszego) mechanizmu połączenia z bazą danych. Naszą pierwszą myślą było sprawić, aby nasza starsza klasa była fasolą i użyła wstrzykniętego TransactionPlatformManager
, ale wydaje się, że nie ma ona żadnych metod istotnych dla naszej sytuacji. Niektóre badania wykazały, że Spring ma klasę o nazwie TransactionSynchronizationManager
, która ma statyczną metodę isActualTransactionActive()
. Moje badania wskazują, metoda ta jest niezawodnym sposobem na wykrycie, czy transakcja Wiosna jest aktywny:Czy istnieje lepszy sposób wykrywania, czy transakcja Spring DB jest aktywna niż przy użyciu TransactionSynchronizationManager.isActualTransactionActive()?
- Wywołany przez służby Wiosna bez
@Transactional
adnotacji, zwraca false - Wywołany przez służby wiosną z
@Transactional
, zwraca prawda - W mojej starszej metody nazywane istniejącą drogę, zwraca false
Moje pytanie: Czy istnieje lepszy sposób na wykrycie, czy transakcja jest aktywna?
Dziękujemy! To idealne. – fool4jesus