首頁 > Java > java教程 > Spring 的 @Transactional 註解適用於私有方法嗎?

Spring 的 @Transactional 註解適用於私有方法嗎?

Barbara Streisand
發布: 2024-12-25 14:09:11
原創
289 人瀏覽過

Does Spring's @Transactional Annotation Work on Private Methods?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板