簡體   English   中英

spring aop如何使用jdk代理處理@Transactional?

[英]how spring aop handle @Transactional with jdk proxy?

如果一個 Service 類具有帶有 @Transactional 的方法,那么 spring 將使用代理來處理它。 但是如果一個事務方法調用另一個

@Transactional
public FeedBackModel getOne() {
    ///..
    return getTwo();
}
@Transactional
public FeedBackModel getTwo() {
    return null;
}

像這樣。

如果是 jdk 代理,那么第二個 @Transactional 將不起作用。 但是 spring PROPAGATION 會正確處理這個問題。 它是如何工作的?

如果你想在提交事務getTwo()這是從所謂的getOne()這是行不通的,即使是在兩者都是@Transactional。 請參閱文檔

...請接受 Spring 團隊的建議,只使用 @Transactional 注釋來注釋具體類(以及具體類的方法)。

注意:由於此機制基於代理,因此只會攔截通過代理傳入的“外部”方法調用。 這意味着'self-invocation' ,即目標對象中的一個方法調用目標對象的其他方法,即使被調用的方法用@Transactional 標記,也不會在運行時導致實際的事務

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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