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