Rumah >Java >javaTutorial >Apakah kaedah pelaksanaan proksi dinamik musim bunga?
Cara melaksanakan proksi dinamik spring: 1. Proksi dinamik JDK 2. Proksi dinamik CGLIB. Pengenalan terperinci: 1. Proksi dinamik JDK menggunakan mekanisme pantulan JDK Ia memerlukan objek proksi mesti melaksanakan sekurang-kurangnya satu antara muka Pada masa jalan, Spring akan memperoleh semua antara muka objek proksi melalui mekanisme pantulan, dan kemudian menyediakannya Antara muka mencipta objek InvocationHandler, yang melaksanakan semua kaedah antara muka dan memajukan semua panggilan kaedah kepada Pengendali dan sebagainya.
Sistem pengendalian tutorial ini: sistem Windows 10, komputer DELL G3.
Rangka kerja Spring menyediakan dua jenis proksi: proksi dinamik JDK dan proksi dinamik CGLIB.
1. Proksi dinamik JDK:
JDK proksi dinamik menggunakan mekanisme pantulan JDK, yang memerlukan objek yang diproksikan mesti melaksanakan sekurang-kurangnya satu antara muka. Pada masa jalan, Spring akan memperoleh semua antara muka objek yang diproksikan melalui mekanisme pantulan, dan kemudian mencipta objek InvocationHandler untuk antara muka ini Objek ini melaksanakan semua kaedah antara muka dan memajukan semua panggilan kaedah ke objek Pengendali mengandungi semua logik proksi . Oleh itu, untuk menggunakan proksi dinamik JDK, kelas anda mesti melaksanakan sekurang-kurangnya satu antara muka.
Kod contoh:
@Service public class MyServiceImpl implements MyService { // 实现接口方法 } @Component public class MyComponent { @Autowired private MyService myService; }
2. Proksi dinamik CGLIB:
Proksi dinamik CGLIB menggunakan teknologi bytecode, yang boleh membuat subkelas secara dinamik pada masa jalan dan mengatasi kaedah yang memerlukan proksi. Oleh itu, menggunakan proksi dinamik CGLIB, kelas anda tidak perlu melaksanakan sebarang antara muka. Jika kelas anda tidak melaksanakan sebarang antara muka, Spring akan menggunakan proksi dinamik CGLIB untuk mencipta objek proksi.
Kod sampel:
@Service public class MyServiceImpl { // 实现业务逻辑 } @Component public class MyComponent { @Autowired private MyService myService; }
Pada Musim Bunga, proksi dinamik JDK digunakan secara lalai untuk mencipta objek proksi. Jika anda mahu Spring menggunakan proksi dinamik CGLIB untuk mencipta objek proksi, anda boleh menambah konfigurasi berikut pada fail konfigurasi anda:
<aop:config proxy-target-class="true"> <!-- 其他配置 --> </aop:config>
Atas ialah kandungan terperinci Apakah kaedah pelaksanaan proksi dinamik musim bunga?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!