Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 28258|Antwoord: 2

[Bron] Praktische werking: AOP in Spring Boot wijzigt dynamisch de waarde van de verzoekparameter

[Link kopiëren]
Geplaatst op 06-11-2021 12:15:55 | | | |
Eisen: Het project moet de verzoekparameters dynamisch wijzigen, om waarden toe te wijzen aan de verzoekparameters volgens de rechten van de huidige gebruiker; voordat de parameters in de controllermethode komen, moet de wijziging van de verzoekparameters worden voltooid, en wanneer de controller de servicelaag oproept, kunnen de verzoekparameters worden gebruikt als voorwaarden om de data te bevragen en te wijzigen. Er zijn twee gevallen van verzoekende parameters:

  • Voor gebruikers met hoge rechten kun je de daadwerkelijk gevraagde parameterwaarden gebruiken
  • Voor mensen met slechts gedeeltelijke rechten worden de parameters van het verzoek dynamisch aangepast op basis van de informatie die aan de huidige gebruiker is gebonden


In het begin wilde ik het via een filter implementeren, maar het was te omslachtig om de verzoekinhoud te serialiseren en te deserialiseren, en het vereiste ook veel logisch oordeel en prestatieverlies. Gelukkig biedt Spring AOP-georiënteerde functionaliteit, die met eenvoudige code kan worden geïmplementeerd.

Allereerst moet het Maven-project pom.xml het spring-boot-starter-aop pakket introduceren, als volgt:

Zodra het pakket is geïntroduceerd, kunnen we de AOP-functie gebruiken, via@Aspectaantekening.

Aspect ondersteunt 5 soorten notificatie-annotaties:

@Before: Pre-notificatie, die wordt uitgevoerd voordat de methode wordt uitgevoerd

@After: Na de melding, uitgevoerd nadat de methode is uitgevoerd

@AfterRunning: Geeft een melding terug, die wordt uitgevoerd nadat de methode een resultaat heeft teruggegeven

@AfterThrowing: Uitzonderingsmelding, nadat de methode een uitzondering heeft gegooid

@Around: Wraparound-meldingen, rondom methode-uitvoering

Maak een Request.java generieke request wrapper-klasse aan:

Maak een nieuwe UserInfo.java vraag specifieke dataklasse aan:

Als de huidige request-header een appid heeft, wordt de waarde van de requestparameter appId gewijzigd, anders wordt de requestparameter niet gewijzigd, de code is als volgt:

Maak een nieuwe HomeController-controller aan en voeg een interface toe met een request-parameter die Request bevat<UserInfo>; de code is als volgt:

In het geval van testen zonder de appId-requestheader is de requestparameter appId de werkelijke waarde en is niet gewijzigd, zoals weergegeven in de volgende figuur:



Als je probeert de appId-verzoekheader toe te voegen, zie je dat de appId-verzoekparameter succesvol is gewijzigd, zoals weergegeven in de volgende figuur:



Voeg tenslotte de broncode bij:De hyperlink-login is zichtbaar.





Vorig:Gebruik iPerf3 om netwerkcommunicatiesnelheden van apparaten te testen
Volgend:Installeer iDRAC Service Module-software op VMware ESXi
 Huisbaas| Geplaatst op 06-11-2021 12:21:32 |
In Spring AOP richt de bedrijfslogica zich alleen op het bedrijf zelf, waarbij logging, prestatiestatistieken, beveiligingscontrole, transactieverwerking, uitzonderingsbehandeling, enzovoort worden gescheiden van de bedrijfslogicacode, en door deze gedragingen te scheiden, hopen we ze te kunnen scheiden in methoden die de bedrijfslogica niet sturen, en deze gedragingen vervolgens kunnen veranderen zonder de code van de bedrijfslogica te beïnvloeden.
Geplaatst op 15-03-2023 11:11:04 |
zsdfghjkvbjnm
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com