簡體   English   中英

@Transactional和繼承

[英]@Transactional and inheritance

我曾經在所有Spring服務(類)中添加@Transactional注釋。 然后我想:如果交易行為應該是一樣的話,我真的必須這樣做嗎? (當然,如果它不應該,我們會將@Transational與其他參數一起添加到方法中。)我試圖找到一些關於@Transactional繼承的有用信息,閱讀@Inherited (看起來@Transactional@Inherited ) 。 我為以下示例嘗試了rollbackFornoRollbackFor ,看起來GenericService @Transactional適用於doSmthSpecific

@Transactional
public abstract class GenericService {
    public void doSmthGeneric() {
    }
}

public class SpecificService extends GenericService {
    public void doSmthSpecific() {
    }
}

如果GenericService是一個接口,我認為它不會起作用 我想這更像是“糾正我,如果我錯了”的問題,我想知道是否真的可以將@Transactional添加到超類中,如果我在這里遺漏了一些東西。 可以理解詳細解釋(或這種解釋的鏈接)。

引用文檔

您可以在接口定義,接口上的方法,類定義或類的公共方法之前放置@Transactional注釋...

他們還建議不要注釋接口/接口方法。

Spring建議您只使用@Transactional注釋來注釋具體類(以及具體類的方法),而不是注釋接口。 您當然可以將@Transactional注釋放在接口(或接口方法)上,但這只能在您使用基於接口的代理時按預期工作。

后來他們繼續解釋當你使用基於類的代理或aspectj編織時它不起作用。

暫無
暫無

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

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