[英]@Transactional and inheritance
我曾經在所有Spring服務(類)中添加@Transactional
注釋。 然后我想:如果交易行為應該是一樣的話,我真的必須這樣做嗎? (當然,如果它不應該,我們會將@Transational
與其他參數一起添加到方法中。)我試圖找到一些關於@Transactional
繼承的有用信息,閱讀@Inherited
(看起來@Transactional
是@Inherited
) 。 我為以下示例嘗試了rollbackFor
和noRollbackFor
,看起來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.