Rumah  >  Artikel  >  Apakah perbezaan antara proksi cglib dan proksi dinamik jdk?

Apakah perbezaan antara proksi cglib dan proksi dinamik jdk?

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌asal
2023-06-12 10:36:5116147semak imbas

Perbezaan antara proksi cglib dan proksi dinamik jdk ialah proksi dinamik JDK mencipta tika proksi bagi objek proksi berdasarkan antara muka, manakala proksi Cglib menjana subkelas kelas proksi berdasarkan warisan.

Apakah perbezaan antara proksi cglib dan proksi dinamik jdk?

Sistem pengendalian untuk tutorial ini: Sistem Windows 10, versi jdk15, komputer Dell G3.

Proksi dinamik JDK dan proksi Cglib ialah kedua-dua kaedah pelaksanaan proksi dalam bahasa Java Terdapat perbezaan tertentu antara keduanya dari segi penggunaan, prestasi dan senario yang berkenaan:

1 :

屏幕截图 2023-06-12 103510.png

  • Cipta contoh proksi bagi objek yang diproksi berdasarkan antara muka. Apabila objek hendak diproksikan, ia mesti melaksanakan satu atau lebih antara muka dan bergantung pada perpustakaan JDK. Proksi dinamik JDK menggunakan mekanisme pantulan untuk menjana kelas proksi yang mengandungi semua antara muka objek proksi dan meliputi semua kaedah dalam antara muka, yang boleh proksi objek sasaran.

  • Kelebihan: Tidak perlu merujuk perpustakaan pihak ketiga, ia boleh dijalankan dalam persekitaran masa jalan JRE dan menjana objek proksi adalah lebih mudah dan lebih cepat Kelemahan: Proksi berdasarkan antara muka sahaja disokong, dan kelas tidak boleh menjadi ejen, jadi peranannya terhad.

2., proksi Cglib:

屏幕截图 2023-06-12 103555.png

  • Jana subkelas kelas proksi berdasarkan warisan , dengan itu menambah logik proksi. Kerana ia mewarisi kelas proksi, ia akan dipengaruhi oleh atribut tidak boleh diwarisi seperti kelas akhir, peribadi dan statik.

  • Kelebihan: Cglib menyokong kelas proksi Walaupun tiada antara muka, ia boleh dicapai secara tidak langsung dengan menetapkan antara muka panggil balik. Prestasinya lebih tinggi daripada proksi dinamik JDK, dan ia boleh menyasarkan objek yang tidak melaksanakan sebarang antara muka.

Dalam proses menjana kelas proksi, Cglib menggunakan kaedah menjana kod bait secara dinamik untuk melengkapkan penciptaan kelas proksi dan menyimpannya dalam memori sebelum dimuatkan oleh kelas proksi pada setiap satu panggilan, kelas proksi cache digunakan secara langsung. Dalam kebanyakan kes, proksi Cglib lebih sesuai untuk pemintasan kaedah berskala besar dan senario peningkatan berbanding proksi dinamik JDK.

Atas ialah kandungan terperinci Apakah perbezaan antara proksi cglib dan proksi dinamik jdk?. 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