簡體   English   中英

Spring 啟動應用程序卡在事務 requried_new

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM