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!