Menyingkap Sihir Transaksi Spring
Kaedah anotasi dengan @Transactional mencetuskan Spring untuk mencipta kelas proksi untuk memintas panggilan kaedah masuk. Begini caranya:
Penciptaan dan Struktur Kelas Proksi
Spring mencipta kelas proksi yang melaksanakan antara muka yang sama seperti kelas beranotasi. Kelas proksi ialah kelas yang dijana secara dinamik yang membungkus kelas asal. Di dalam kelas proksi, Spring menyuntik kod untuk mengendalikan gelagat transaksi, seperti mengurus kitaran hayat transaksi.
Tindas sebenar kelas asal tidak terjejas. Ia kekal utuh, tetapi panggilan kaedah ke kelas asal dipintas oleh kelas proksi.
Keterlihatan Kelas Proksi
Kelas proksi biasanya tidak kelihatan pada masa jalan. Spring secara telus memintas panggilan kaedah melalui proksi, menjadikannya seolah-olah kelas asal sedang digunakan. Walau bagaimanapun, anda boleh mengakses kelas proksi menggunakan alatan seperti alat penyahpepijatan atau rangka kerja AOP.
Skop Transaksi Terhad untuk Panggilan Dalaman
Proksi transaksi Spring hanya memintas panggilan yang datang daripada sumber luar. Panggilan yang dibuat dalam objek yang sama, juga dikenali sebagai "seruan kendiri," tidak dipintas. Ini kerana panggilan sedemikian memintas mekanisme proksi.
Penyelesaian Doa Kendiri
Untuk mendayakan gelagat transaksi bagi kaedah seruan sendiri, anda boleh menyuntik contoh proksi kelas ke dalam kelas rujukan kendiri menggunakan BeanFactoryPostProcessor. Ini membolehkan anda mengarahkan panggilan dalaman melalui proksi, dengan itu memanjangkan skop transaksi kepada kaedah dakwaan sendiri.
Atas ialah kandungan terperinci Bagaimanakah Spring's @Transactional Annotation Mengurus Transaksi dan Mengendalikan Invokasi Sendiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!