Spring 中私有方法的事務屬性效能
在 Spring 中,@Transactional 註解可以分割方法的事務邊界。一個常見的問題是,當將此註釋應用於 Spring beans 中的私有方法時,其有效性如何。
答案很簡單:@Transactional 對私有方法沒有影響。這是由於 Spring 使用的代理產生器忽略了私有方法。
為了進一步說明,請考慮以下範例:
public class Bean { public void doStuff() { doPrivateStuff(); } @Transactional private void doPrivateStuff() { } }
儘管私人方法 doPrivateStuff() 上有 @Transactional 註解,它仍然無效並且不會修改交易行為。這種行為記錄在Spring 手冊第10.5.6 章中,其中明確指出:
「當使用代理時,您應該僅將@Transactional 註解應用於具有公共可見性的方法。如果您註解了protected、private或具有@Transactional 註釋的套件可見方法,不會引發錯誤,但帶有註釋的方法不會顯示配置的交易設定...如果需要註釋,請考慮使用AspectJ。
以上是Spring 的 @Transactional 註解適用於私有方法嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!