Rumah >Java >javaTutorial >Bagaimana Spring's @Transactional Annotation Menguruskan Transaksi dan Mengapa Ia Tidak Berfungsi dengan Self-Invocations?

Bagaimana Spring's @Transactional Annotation Menguruskan Transaksi dan Mengapa Ia Tidak Berfungsi dengan Self-Invocations?

Barbara Streisand
Barbara Streisandasal
2024-12-19 13:18:09571semak imbas

How Does Spring's @Transactional Annotation Manage Transactions and Why Doesn't It Work with Self-Invocations?

Pengurusan Transaksi Musim Bunga dengan @Transactional

Apa Yang Berlaku Apabila Anda Menggunakan @Transactional?

Apabila anda menganotasi kaedah dengan @Transactional, Spring mencipta kelas proksi untuk kelas beranotasi. Kelas proksi ini memintas panggilan kaedah luaran dan menggunakan gelagat transaksi kepada mereka.

Pemintasan Kelas Proksi

Kelas proksi mengandungi pelaksanaan kaedah yang diisytiharkan dalam kelas beranotasi. Apabila panggilan kaedah luaran dibuat, ia diubah hala ke kelas proksi dan bukannya kelas asal. Kelas proksi kemudiannya boleh melakukan sebarang pra dan pasca pemprosesan yang diperlukan di sekitar panggilan kaedah, termasuk pengurusan urus niaga.

Pertimbangan Seruan Sendiri

Mekanisme pengurusan transaksi Spring sahaja memintas panggilan kaedah luaran. Ini bermakna bahawa seruan sendiri, di mana kaedah dalam objek sasaran memanggil kaedah lain dalam objek yang sama, tidak akan memulakan transaksi secara automatik. Ini disebabkan fakta bahawa invokasi sendiri memintas mekanisme proksi.

Kelas Proksi Kelihatan

Kelas proksi yang dijana boleh dilihat menggunakan refleksi. Anda boleh mengakses maklumatnya dengan introspeksi kelas sasaran dan mendapatkan semula kelas yang diisytiharkan. Kelas proksi biasanya diakhiri dengan "$Proxy".

Mengapa Panggilan Luaran Sahaja?

Sebab mengapa hanya panggilan kaedah luaran yang sedang diuruskan adalah untuk mengelakkan pengulangan tak terhingga . Jika dakwaan sendiri turut memulakan urus niaga, ini boleh membawa kepada situasi di mana kaedah memulakan urus niaga baharu, kemudian memanggil dirinya sendiri dan memulakan urus niaga lain, dan seterusnya, mewujudkan gelung yang tidak berkesudahan.

Atas ialah kandungan terperinci Bagaimana Spring's @Transactional Annotation Menguruskan Transaksi dan Mengapa Ia Tidak Berfungsi dengan Self-Invocations?. 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