使用 @Transactional 進行 Spring 事務管理
當你使用 @Transactional 時會發生什麼?
當你用 @Transactional 註解一個方法時會發生什麼事? @Transactional,Spring為被註解的類別建立一個代理類別。此代理類別會攔截外部方法呼叫並向其應用事務行為。
代理類別攔截
代理類別包含已註解的類別中宣告的方法的實作。當外部方法呼叫時,會被重定向到代理類別而不是原來的類別。然後,代理類別可以圍繞方法呼叫執行任何必要的預處理和後處理,包括事務管理。
自呼叫注意事項
僅限 Spring 的事務管理機制攔截外部方法呼叫。這意味著自呼叫(目標物件中的方法呼叫同一物件中的另一個方法)不會自動啟動事務。這是由於自呼叫繞過了代理機制。
可見代理類別
產生的代理類別可以使用反射來查看。您可以透過內省目標類別並檢索其聲明的類別來存取其資訊。代理類別一般以“$Proxy”為後綴。
為什麼只有外部呼叫?
事務下之所以只有外部方法呼叫是為了避免無限遞歸。如果自呼叫也啟動了事務,則可能會導致方法啟動新事務,然後呼叫自身並啟動另一個事務,依此類推,從而形成無限循環。
以上是Spring 的 @Transactional 註解如何管理事務以及為什麼它不能與自調用一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver Mac版
視覺化網頁開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版
中文版,非常好用