mfc 弹簧_弹簧和线程:事务
mfc 彈簧
為了能夠在我們的線程中使用事務,我們需要了解事務如何在spring中工作。 spring中的事務信息存儲在ThreadLocal變量中。 因此,這些變量特定于單個線程上正在進行的事務。
當涉及由單個線程運行的動作時,事務將在分層調用的Spring組件之間傳播。
因此,在產生線程的@Transactional帶注釋的服務的情況下,事務不會從@Transactional服務傳播到新創建的線程。 結果將是一個錯誤,指示缺少事務。
由于在線程內進行的操作需要通過jpa訪問數據庫,因此必須創建一個新事務。 通過查看@Transactional 文檔,我們可以獲得有關事務傳播類型的更多信息。 @Transactional的默認傳播模式為REQUIRED 。
因此,通過使用@Transactional注釋方法,將創建一個新事務并將其傳播到從我們的線程調用的其他服務。
例如,我們的async方法可以注釋為Transactional
@Async @Transactional public void executeTransactionally() {System.out.println("Execute a transaction from the new thread"); }從Runnable類的run函數調用的方法也是如此。 盡管異步的使用非常簡單,但是在后臺,它會將調用包裝在Runnable中,然后將其分派給執行者。
總結一下在Spring處理線程和事務時,應該格外小心。 還請記住,事務不能在線程之間傳遞。 最后但并非最不重要的一點是,請確保您的@Async和@Transactional函數是公共的,并通過將在調用之前進行必要操作的代理。
翻譯自: https://www.javacodegeeks.com/2017/10/spring-threads-transactions.html
mfc 彈簧
總結
以上是生活随笔為你收集整理的mfc 弹簧_弹簧和线程:事务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 缭组词 缭组词有哪些
- 下一篇: 微信怎么解绑银行卡步骤