Rumah >Java >javaTutorial >Adakah Anotasi @Transactional Spring Berfungsi pada Kaedah Persendirian?

Adakah Anotasi @Transactional Spring Berfungsi pada Kaedah Persendirian?

Barbara Streisand
Barbara Streisandasal
2024-12-25 14:09:11321semak imbas

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

Keberkesanan Atribut Transaksi pada Kaedah Persendirian pada Musim Bunga

Dalam Musim Bunga, anotasi @Transactional membolehkan penandaan sempadan transaksi untuk kaedah. Soalan lazim timbul mengenai keberkesanan anotasi ini apabila digunakan pada kaedah persendirian dalam kacang Spring.

Jawapannya mudah: @Transaksi tidak mempunyai kesan ke atas kaedah persendirian. Ini disebabkan oleh penjana proksi yang digunakan oleh Spring mengabaikan kaedah persendirian.

Untuk menjelaskan lebih lanjut, pertimbangkan contoh berikut:

public class Bean {
  public void doStuff() {
     doPrivateStuff();
  }
  @Transactional
  private void doPrivateStuff() {

  }
}

Walaupun anotasi @Transactional pada kaedah persendirian doPrivateStuff() , ia tetap tidak berkesan dan tidak mengubah suai tingkah laku transaksi. Tingkah laku ini didokumenkan dalam Bab 10.5.6 Manual Spring, yang menyatakan secara eksplisit:

"Apabila menggunakan proksi, anda harus menggunakan anotasi @Transactional hanya pada kaedah dengan keterlihatan awam. Jika anda membuat anotasi dilindungi, peribadi atau kaedah yang boleh dilihat pakej dengan anotasi @Transactional, tiada ralat dibangkitkan, tetapi kaedah beranotasi tidak mempamerkan tetapan transaksi yang dikonfigurasikan penggunaan AspectJ... jika anda perlu menganotasi kaedah bukan awam."

Atas ialah kandungan terperinci Adakah Anotasi @Transactional Spring Berfungsi pada Kaedah Persendirian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn