首頁 >Java >java教程 >@Transactional 在 Spring 中的私有方法上運作嗎?

@Transactional 在 Spring 中的私有方法上運作嗎?

Barbara Streisand
Barbara Streisand原創
2024-12-27 22:41:21447瀏覽

Does @Transactional Work on Private Methods in Spring?

@Transactional 註解對私有方法的影響

Spring 的@Transactional 註解在管理事務邊界、確保資料完整性和一致性方面發揮關鍵作用。但是,它的有效性僅限於可訪問的方法。

問題:

應用於 Spring bean 中私有方法的 @Transactional 註解能否有效建立事務?

答:

不,不是。 @Transactional 註解對私有方法沒有影響。

說明:

Spring 利用代理來攔截方法呼叫並管理交易。但是,私有方法不能被代理攔截,因此不受事務行為的影響。

Spring 手冊參考:

Spring 手冊中明確說明了此限制,第10.5.6章:

方法可見性和@Transactional使用時代理,您應該只將@Transactional註釋應用於具有公共可見性的方法。您需要註釋非公共方法,請考慮使用AspectJ(見下文)。
AspectJ:

一個強大的框架,允許攔截非公共方法。

手動啟動和提交事務:

以程式設計方式啟動和控制私有方法中的事務。

  • 透過應用這些替代方案,私有方法仍然可以參與事務行為,儘管採用的方法與公共方法不同。

以上是@Transactional 在 Spring 中的私有方法上運作嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn