[英]Spring boot application stuck with Transaction requried_new
我在 spring 啟動應用程序中有一個調度程序,如果我在調度程序方法上使用 @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) 那么它只適用於一個數據庫 session 但如果我使用 @Transactional.Transaction. REQUIRES_NEW, rollbackFor = Exception.class) 在 DAO 級別或服務 class 級別,基於數據的四個 DAO/服務將 go 到其中一個 DAO,它達到 maxConnection 限制 16,正如我們在數據庫會話中看到的那樣,它沒有卡住/掛起在 java 中處理。 會有什么問題。?
這實際上取決於您調用方法的方式。
我會要求你做的一項測試是:
在schedule方法中添加:
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
然后,在Service方法中,這個:
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
這樣,當服務方法結束時,它會提交事務,但是還有另一個事務 scope 在更高級別運行。
基本上,調度程序方法中的所有處理都應該在一個事務中進行管理,因此注釋應該在它上面(第一種方法)。
如果您在服務/DAO 方法中添加此注釋,那么對於在您內部調用的每個方法,都會創建一個新事務,這可以解釋您所面臨的問題。
最后不需要添加“rollbackFor = Exception.class”,因為這是默認行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.