Prasības: Projektam ir dinamiski jāmaina pieprasījuma parametri, lai piešķirtu vērtības pieprasījuma parametriem atbilstoši pašreizējā lietotāja atļaujām, pirms parametri ievada kontroliera metodi, ir jāpabeidz pieprasījuma parametru modifikācija, un, kad kontrolieris izsauc pakalpojumu slāni, pieprasījuma parametrus var izmantot kā nosacījumus datu vaicāšanai un modificēšanai. Ir divi parametru pieprasīšanas gadījumi:
- Lietotājiem ar augstām privilēģijām varat izmantot faktiski pieprasītās parametru vērtības
- Personām ar tikai daļējām atļaujām pieprasījuma parametru vērtības tiek dinamiski modificētas, pamatojoties uz informāciju, kas saistīta ar pašreizējo lietotāju
Sākumā es gribēju to ieviest, izmantojot filtru, bet tas bija pārāk apgrūtinoši, lai serializētu un deserializētu pieprasījuma saturu, un tas prasīja arī daudz loģiska sprieduma un veiktspējas zuduma. Par laimi, Spring nodrošina AOP uz seju orientētu funkcionalitāti, ko var īstenot ar vienkāršu kodu.
Pirmkārt, maven projekta pom.xml ir jāievieš atsperes-boot-starter-aop pakete šādi:
Kad pakete ir ieviesta, mēs varam izmantot AOP funkciju, izmantojot@AspectAnotācija.
Aspect atbalsta 5 veidu paziņojumu anotācijas:
@Before: Iepriekšēja paziņošana, kas tiek izpildīta pirms metodes izpildes
@After: Pēcpaziņojums, izpildīts pēc metodes izpildes
@AfterRunning: Atgriež paziņojumu, kas tiek izpildīts pēc tam, kad metode atgriež rezultātu
@AfterThrowing: paziņojums par izņēmumu, pēc tam, kad metode rada izņēmumu
@Around: Aptveroši paziņojumi, ap metodes izpildi
Izveidojiet Request.java vispārīgu pieprasījumu iesaiņojuma klasi:
Izveidojiet jaunu UserInfo.java pieprasīt konkrētu datu klasi:
Ja pašreizējai pieprasījuma galvenei ir appid, pieprasījuma parametra appId vērtība tiks mainīta, pretējā gadījumā pieprasījuma parametrs netiks mainīts, kods ir šāds:
Izveidojiet jaunu HomeController kontrolieri un pievienojiet saskarni ar pieprasījuma parametru, kas satur pieprasījumu<UserInfo>, kods ir šāds:
Ja testēšana tiek veikta bez appId pieprasījuma galvenes, pieprasījuma parametrs appId ir faktiskā vērtība un nav modificēts, kā parādīts nākamajā attēlā.
Ja mēģināt pievienot appId pieprasījuma galveni, varat redzēt, ka appId pieprasījuma parametrs ir veiksmīgi modificēts, kā parādīts nākamajā attēlā.
Visbeidzot, pievienojiet avota kodu:Hipersaites pieteikšanās ir redzama.
|