Untuk memahami kaedah aplikasi biasa AOP dalam Spring, contoh kod khusus diperlukan
Rangka kerja Spring ialah rangka kerja pembangunan aplikasi JavaEE sumber terbuka, di mana Pengaturcaraan Berorientasikan Aspek (pendek kata AOP) merupakan salah satu daripadanya yang penting. ciri . Melalui AOP, kami boleh mengasingkan fungsi biasa dalam sistem daripada kod perniagaan, menyediakan kaedah pengembangan yang tidak mengganggu untuk menambah fungsi baharu tanpa mengubah suai kod asal.
Pada Musim Bunga, terdapat dua cara utama untuk melaksanakan AOP: AOP berasaskan proksi dan AOP berasaskan pengubahsuaian bytecode. AOP berasaskan proksi mencapai peningkatan dengan mencipta objek proksi objek sasaran pada masa jalan, manakala AOP berdasarkan pengubahsuaian kod bait mencapai peningkatan dengan mengubah suai kod bait semasa penyusunan atau masa pemuatan.
Yang berikut akan memperkenalkan tiga kaedah aplikasi biasa AOP pada Musim Bunga, dan memberikan contoh kod khusus.
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; @Aspect @Component public class LoggingAspect { @Before("execution(* com.example.service.UserService.addUser(..))") public void beforeAddUser() { System.out.println("Before adding user..."); } }
Dalam kod di atas, kami menggunakan anotasi AspectJ untuk mentakrifkan kelas aspek (Aspek), dan kemudian menggunakan anotasi @Sebelum untuk mentakrifkan kaedah pra-pemberitahuan dalam kelas aspek dipanggil sebelum melaksanakan kaedah addUser UserService.
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.After; import org.springframework.stereotype.Component; @Aspect @Component public class LoggingAspect { @After("execution(* com.example.service.UserService.addUser(..))") public void afterAddUser() { System.out.println("After adding user..."); } }
Dalam kod di atas, kami menggunakan anotasi AspectJ untuk mentakrifkan kelas aspek (Aspek), dan kemudian menggunakan anotasi @After untuk mentakrifkan kaedah pasca pemberitahuan dalam kelas aspek dipanggil selepas melaksanakan kaedah addUser UserService.
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Around; import org.springframework.stereotype.Component; @Aspect @Component public class LoggingAspect { @Around("execution(* com.example.service.UserService.addUser(..))") public Object aroundAddUser(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("Before adding user..."); Object result = joinPoint.proceed(); // 执行目标方法 System.out.println("After adding user..."); return result; } }
Dalam kod sampel di atas, kami menggunakan anotasi AspectJ untuk mentakrifkan kelas aspek (Aspek), dan kemudian gunakan anotasi @Around untuk menentukan kaedah pemberitahuan sekeliling dalam kelas aspek. Dalam kaedah pemberitahuan sekeliling, kami mula-mula melakukan beberapa operasi (seperti mencetak log) sebelum kaedah itu dilaksanakan, kemudian memanggil kaedah proceed() ProceedingJoinPoint untuk melaksanakan kaedah sasaran, dan kemudian kami melakukan beberapa operasi (seperti mencetak log) selepas kaedah dilaksanakan.
Melalui tiga kod sampel di atas, kita boleh melihat kaedah aplikasi biasa AOP dalam rangka kerja Spring, dan contoh kod khusus diberikan. Contoh-contoh ini hanyalah puncak gunung ais AOP Terdapat lebih banyak ekspresi titik, jenis aspek, jenis pemberitahuan, dll. yang boleh digunakan dalam aplikasi praktikal. Pemahaman dan kecekapan yang mendalam dalam penggunaan AOP boleh meningkatkan modulariti, kebolehselenggaraan dan kebolehskalaan kod.
Atas ialah kandungan terperinci Analisis kaedah penggunaan biasa Spring AOP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!