Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 28258|Svar: 2

[Källa] Praktisk funktion: AOP i Spring Boot modifierar dynamiskt värdet på begäranparametern

[Kopiera länk]
Publicerad på 2021-11-06 12:15:55 | | | |
Krav: Projektet behöver dynamiskt modifiera förfrågningsparametrarna, tilldela värden till förfrågningsparametrarna enligt den nuvarande användarens behörigheter, innan parametrarna går in i kontrollmetoden, måste ändringen av förfrågningsparametrarna slutföras, och när kontrollanten anropar tjänstelagret kan förfrågningsparametrarna användas som villkor för att fråga och ändra datan. Det finns två fall där begärda parametrar efterfrågas:

  • För användare med höga privilegier kan du använda de faktiska begärda parametervärdena
  • För personer med endast partiella behörigheter modifieras begäransökningsparametrarnas dynamiskt baserat på informationen som är bunden till den aktuella användaren


Till en början ville jag implementera det genom ett filter, men det var för omständligt att serialisera och deserialisera begäran, och det krävde också mycket logiskt omdöme och prestandaförlust. Lyckligtvis erbjuder Spring AOP-funktionalitet som är ansiktsorienterad, vilket kan implementeras med enkel kod.

Först och främst behöver Maven-projektet pom.xml introducera spring-boot-starter-aop-paketet, enligt följande:

När paketet är introducerat kan vi använda AOP-funktionen, genom@Aspectanteckning.

Aspect stöder 5 typer av notifikationsannoteringar:

@Before: Förhandsnotifikation, som utförs innan metoden körs

@After: Efter notifikation, körs efter att metoden körts

@AfterRunning: Returnerar en notifikation, som körs efter att metoden returnerat ett resultat

@AfterThrowing: Undantagsnotifikation, efter att metoden kastat ett undantag

@Around: Wraparound-notiser, kring metodexekvering

Skapa en Request.java generisk request-wrapper-klass:

Skapa en ny UserInfo.java begära specifik dataklass:

Om den aktuella begäransökningshuvudet har en appid kommer värdet på begäranparametern appId att ändras, annars kommer inte begäranparametern att ändras, koden är följande:

Skapa en ny HomeController-kontroller och lägg till ett gränssnitt med en request-parameter som innehåller Request<UserInfo>, koden är följande:

Vid testning utan appId-begärandets huvud är begäranparametern appId det faktiska värdet och har inte ändrats, som visas i följande figur:



Om du försöker lägga till appId-begärandets header kan du se att appId-begäranarparametern har modifierats framgångsrikt, som visas i följande figur:



Slutligen, bifoga källkoden:Inloggningen med hyperlänken är synlig.





Föregående:Använd iPerf3 för att testa enhetens nätverkskommunikationshastigheter
Nästa:Installera iDRAC Service Module-programvara på VMware ESXi
 Hyresvärd| Publicerad på 2021-11-06 12:21:32 |
I Spring AOP fokuserar affärslogiken endast på själva verksamheten, och delar loggning, prestandastatistik, säkerhetskontroll, transaktionshantering, undantagshantering etc. från affärslogikkoden, och genom att separera dessa beteenden hoppas vi kunna separera dem i metoder som inte styr affärslogiken, och sedan ändra dessa beteenden utan att påverka affärslogikens kod.
Publicerad på 2023-03-15 11:11:04 |
zsdfghjkvbjnm
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com