Rumah > Java > javaTutorial > Mengapa @Transactional Tidak Berfungsi pada Kaedah Spring Bean Persendirian?

Mengapa @Transactional Tidak Berfungsi pada Kaedah Spring Bean Persendirian?

Barbara Streisand
Lepaskan: 2024-12-17 12:26:26
asal
236 orang telah melayarinya

Why Doesn't @Transactional Work on Private Spring Bean Methods?

Spring @Transactional Annotation on Private Methods

Sekiranya @Transactional anotation digunakan pada kaedah persendirian dalam Spring bean, ia tidak akan mempunyai sebarang kesan. Ini kerana penjana proksi, yang bertanggungjawab untuk mencipta proksi untuk Spring beans, mengabaikan kaedah persendirian semasa menjana proksi.

Contohnya, pertimbangkan Spring bean berikut:

public class Bean {
    public void doStuff() {
        doPrivateStuff();
    }

    @Transactional
    private void doPrivateStuff() {

    }
}
Salin selepas log masuk

Apabila konteks aplikasi dibuat, proksi akan dibuat untuk kelas Bean. Walau bagaimanapun, anotasi @Transactional pada kaedah doPrivateStuff akan diabaikan dan kaedah tersebut tidak akan mempamerkan tetapan transaksi yang dikonfigurasikan.

Tingkah laku ini didokumenkan dalam Manual Spring bab 10.5.6:

When using proxies, you should apply the @Transactional annotation only to methods with public visibility. If you do annotate protected, private or package-visible methods with the @Transactional annotation, no error is raised, but the annotated method does not exhibit the configured transactional settings. Consider the use of AspectJ (see below) if you need to annotate non-public methods.
Salin selepas log masuk

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan