Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 28258|Jawab: 2

[Sumber] Operasi Praktis: AOP di Spring Boot secara dinamis memodifikasi nilai parameter permintaan

[Salin tautan]
Diposting pada 06/11/2021 12.15.55 | | | |
Persyaratan: Proyek perlu memodifikasi parameter permintaan secara dinamis, untuk menetapkan nilai ke parameter permintaan sesuai dengan izin pengguna saat ini, sebelum parameter memasuki metode pengontrol, modifikasi parameter permintaan harus diselesaikan, dan ketika pengontrol memanggil lapisan layanan, parameter permintaan dapat digunakan sebagai kondisi untuk mengkueri dan memodifikasi data. Ada dua kasus parameter permintaan:

  • Untuk pengguna dengan hak istimewa tinggi, Anda dapat menggunakan nilai parameter aktual yang diminta
  • Untuk orang yang hanya memiliki izin sebagian, nilai parameter permintaan dimodifikasi secara dinamis berdasarkan informasi yang terikat ke pengguna saat ini


Awalnya, saya ingin menerapkannya melalui filter, tetapi terlalu rumit untuk menserialkan dan mendeserialisasi konten permintaan, dan itu juga membutuhkan banyak penilaian logis dan kehilangan kinerja. Untungnya, Spring menyediakan fungsionalitas berorientasi wajah AOP, yang dapat diimplementasikan dengan kode sederhana.

Pertama-tama, proyek maven pom.xml perlu memperkenalkan paket spring-boot-starter-aop, sebagai berikut:

Setelah paket diperkenalkan, kita dapat menggunakan fitur AOP, melalui@AspectAnotasi.

Aspect mendukung 5 jenis anotasi notifikasi:

@Before: Pra-pemberitahuan, yang dijalankan sebelum metode dijalankan

@After: Pasca-pemberitahuan, dijalankan setelah metode dijalankan

@AfterRunning: Mengembalikan notifikasi, yang dijalankan setelah metode mengembalikan hasil

@AfterThrowing: Pemberitahuan pengecualian, setelah metode melemparkan pengecualian

@Around: Pemberitahuan menyeluruh, seputar eksekusi metode

Buat kelas pembungkus permintaan generik Request.java:

Buat kelas data khusus UserInfo.java permintaan baru:

Jika header permintaan saat ini memiliki appid, nilai parameter permintaan appId akan dimodifikasi, jika tidak, parameter permintaan tidak akan dimodifikasi, kodenya adalah sebagai berikut:

Buat pengontrol HomeController baru dan tambahkan antarmuka dengan parameter permintaan yang berisi Permintaan<UserInfo>, kodenya adalah sebagai berikut:

Dalam kasus pengujian tanpa header permintaan appId, parameter permintaan appId adalah nilai aktual dan belum diubah, seperti yang ditunjukkan pada gambar berikut:



Jika Anda mencoba menambahkan header permintaan appId, Anda dapat melihat bahwa parameter permintaan appId telah berhasil dimodifikasi, seperti yang ditunjukkan pada gambar berikut:



Terakhir, lampirkan kode sumber:Login hyperlink terlihat.





Mantan:Gunakan iPerf3 untuk menguji kecepatan komunikasi jaringan perangkat
Depan:Instal perangkat lunak Modul Layanan iDRAC di VMware ESXi
 Tuan tanah| Diposting pada 06/11/2021 12.21.32 |
Di Spring AOP, logika bisnis hanya berfokus pada bisnis itu sendiri, membagi pencatatan, statistik kinerja, kontrol keamanan, pemrosesan transaksi, penanganan pengecualian, dll. dari kode logika bisnis, dan dengan memisahkan perilaku ini, kami berharap dapat memisahkannya menjadi metode yang tidak memandu logika bisnis, dan kemudian mengubah perilaku ini tanpa mempengaruhi kode logika bisnis.
Diposting pada 15/03/2023 11.11.04 |
zsdfghjkvbjnm
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com