Langkah untuk menggunakan proksi dinamik dalam Spring: 1. Tentukan antara muka 2. Buat kelas sasaran 4. Konfigurasikan pemberitahuan; Pengenalan terperinci: 1. Untuk menentukan antara muka, anda perlu menentukan antara muka, yang akan dilaksanakan oleh objek proksi Antara muka ini mentakrifkan tingkah laku yang anda ingin laksanakan sebelum, selepas, dan apabila pengecualian dilemparkan. Buat kelas sasaran, buat kelas sasaran MyServiceImpl yang melaksanakan antara muka MyService Kelas ini mengandungi perkara yang anda mahu lakukan sebelum kaedah dipanggil, dsb.
Sistem pengendalian tutorial ini: sistem Windows 10, komputer DELL G3.
Dalam rangka kerja Spring, proksi dinamik ialah teknologi biasa yang digunakan untuk mencipta objek proksi secara dinamik pada masa jalan untuk melaksanakan fungsi AOP (pengaturcaraan berorientasikan aspek). Proksi dinamik membenarkan pengaturcara mentakrifkan kebimbangan silang yang boleh melaksanakan kod tertentu sebelum dan selepas kaedah dipanggil, apabila pengecualian dilemparkan, apabila melaksanakan dalam transaksi, dsb.
Berikut ialah langkah untuk melaksanakan AOP dalam Spring menggunakan proksi dinamik:
1 Tentukan antara muka: Pertama, anda perlu menentukan antara muka, yang akan dilaksanakan oleh objek proksi. Antara muka ini mentakrifkan tingkah laku yang anda mahu lakukan sebelum dan selepas panggilan kaedah, apabila pengecualian dilemparkan, dsb. Sebagai contoh, anda boleh menentukan antara muka bernama MyService yang mengandungi kaedah doSomething().
public interface MyService { void doSomething(); }
2. Buat kelas sasaran: Buat kelas sasaran MyServiceImpl yang melaksanakan antara muka MyService. Kelas ini mengandungi kod yang anda ingin laksanakan sebelum, selepas, dsb. kaedah dipanggil.
public class MyServiceImpl implements MyService { public void doSomething() { System.out.println("Doing something..."); } }
3 Cipta kelas proksi: Gunakan rangka kerja AOP yang disediakan oleh Spring untuk mencipta kelas proksi. Spring menyediakan dua jenis proksi dinamik: proksi dinamik JDK dan proksi dinamik CGLIB. Di sini kami mengambil proksi dinamik JDK sebagai contoh dan menggunakan ProxyFactoryBean untuk mencipta kelas proksi MyServiceProxy.
import org.springframework.aop.framework.ProxyFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean public MyService myService() { return new MyServiceImpl(); } @Bean public MyServiceProxy myServiceProxy() { ProxyFactoryBean factory = new ProxyFactoryBean(); factory.setTargetBeanName("myService"); // 指定目标对象的名字 factory.addAdvice(new SimpleTraceInterceptor()); // 添加通知,定义在方法调用之前、之后等场景中执行的代码 return (MyServiceProxy) factory.getObject(); // 获取代理对象 } }
4. Konfigurasikan pemberitahuan: Dalam kelas proksi, anda perlu mengkonfigurasi pemberitahuan (Nasihat) untuk menentukan kod yang akan dilaksanakan dalam senario seperti sebelum dan selepas panggilan kaedah. Di sini kami menggunakan SimpleTraceInterceptor sebagai contoh, yang akan mengeluarkan log sebelum dan selepas panggilan kaedah. Anda boleh menyesuaikan pelaksanaan pemberitahuan mengikut keperluan.
5 Jalankan aplikasi: Lancarkan aplikasi dan uji sama ada proksi dinamik berfungsi seperti yang diharapkan. Anda boleh mengesahkan bahawa pemberitahuan dilaksanakan dengan betul dengan memanggil pelbagai kaedah pada objek sasaran. Dalam contoh di atas, apabila myServiceProxy().doSomething() dipanggil, log "Melakukan sesuatu..." akan menjadi output dan log yang sepadan akan dikeluarkan sebelum dan selepas panggilan kaedah.
Selain proksi dinamik JDK yang digunakan dalam contoh di atas, Spring juga menyediakan proksi dinamik CGLIB sebagai pilihan lain. Proksi dinamik CGLIB sesuai untuk kelas yang tidak melaksanakan antara muka Fail kelas kelas objek proksi dimuatkan melalui rangka kerja pemprosesan bytecode asm, dan subkelas dijana dengan mengubah suai bytecode. Kaedah konfigurasi menggunakan proksi dinamik CGLIB adalah serupa dengan proksi dinamik JDK, kecuali anda perlu menggunakan kelas atau kaedah konfigurasi yang berbeza semasa membuat objek proksi.
Atas ialah kandungan terperinci Cara menggunakan proksi dinamik dalam Spring. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!