Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 28258|Svar: 2

[Kilde] Praktisk funktion: AOP i Spring Boot ændrer dynamisk værdien af forespørgselsparameteren

[Kopier link]
Opslået på 06/11/2021 12.15.55 | | | |
Krav: Projektet skal dynamisk ændre anmodningsparametrene, tildele værdier til anmodningsparametrene i henhold til den nuværende brugers tilladelser, før parametrene går ind i controller-metoden, skal ændringen af anmodningsparametrene være færdig, og når controlleren kalder servicelaget, kan anmodningsparametrene bruges som betingelser for forespørgsel og ændring af dataene. Der er to tilfælde af anmoderparametre:

  • For brugere med høje privilegier kan du bruge de faktiske ønskede parameterværdier
  • For personer med kun delvise tilladelser ændres værdierne af anmodningsparametrene dynamisk baseret på de oplysninger, der er bundet til den aktuelle bruger


I starten ville jeg implementere det gennem et filter, men det var for besværligt at serialisere og deserialisere anmodningsindholdet, og det krævede også meget logisk dømmekraft og tab af ydeevne. Heldigvis tilbyder Spring AOP ansigtsorienteret funktionalitet, som kan implementeres med simpel kode.

Først og fremmest skal Maven-projektet pom.xml introducere spring-boot-starter-aop-pakken, som følger:

Når pakken er introduceret, kan vi bruge AOP-funktionen, gennem@Aspectannotation.

Aspect understøtter 5 typer notifikationsannotationer:

@Before: Forhåndsmeddelelse, som udføres før metoden udføres

@After: Efter notifikation, udført efter metoden er udført

@AfterRunning: Returnerer en notifikation, som udføres efter at metoden returnerer et resultat

@AfterThrowing: Undtagelsesmeddelelse, efter at metoden har kastet en undtagelse

@Around: Wraparound-notifikationer, omkring metodeudførelse

Opret en Request.java generisk request wrapper-klasse:

Opret en ny UserInfo.java anmod specifik dataklasse:

Hvis den aktuelle anmodningsheader har en appid, vil værdien af anmodningsparameteren appId blive ændret, ellers vil anmodningsparameteren ikke blive ændret, koden er som følger:

Opret en ny HomeController-controller og tilføj et interface med en anmodningsparameter, der indeholder Request<UserInfo>, koden er som følger:

I tilfælde af test uden appId-anmodningsheaderen er anmodningsparameteren appId den faktiske værdi og er ikke blevet ændret, som vist i følgende figur:



Hvis du prøver at tilføje appId-anmodningsheaderen, kan du se, at appId-anmodningsparameteren er blevet ændret med succes, som vist i følgende figur:



Endelig vedhæft kildekoden:Hyperlink-login er synlig.





Tidligere:Brug iPerf3 til at teste enhedsnetværkskommunikationshastigheder
Næste:Installer iDRAC Service Module-software på VMware ESXi
 Udlejer| Opslået på 06/11/2021 12.21.32 |
I Spring AOP fokuserer forretningslogik kun på selve virksomheden, hvor logging, performance-statistikker, sikkerhedskontrol, transaktionsbehandling, undtagelseshåndtering osv. opdeles fra forretningslogikkoden, og ved at adskille disse adfærdsmønstre håber vi at kunne adskille dem i metoder, der ikke styrer forretningslogikken, og derefter ændre disse adfærdsmønstre uden at påvirke forretningslogikken.
Opslået på 15/03/2023 11.11.04 |
zsdfghjkvnm
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com