Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 28258|Antwort: 2

[Quelle] Praktischer Betrieb: AOP in Spring Boot verändert dynamisch den Wert des Anforderungsparameters

[Link kopieren]
Veröffentlicht am 06.11.2021 12:15:55 | | | |
Anforderungen: Das Projekt muss die Anfrageparameter dynamisch modifizieren, Werte den Anfrageparametern gemäß den Berechtigungen des aktuellen Benutzers zuweisen, bevor die Parameter in die Controller-Methode gelangen, die Änderung der Anfrageparameter abgeschlossen werden muss, und wenn der Controller die Serviceschicht aufruft, können die Anfrageparameter als Bedingungen verwendet werden, um die Daten abzufragen und zu verändern. Es gibt zwei Fälle von angeforderten Parametern:

  • Für Nutzer mit hohen Rechten können Sie die tatsächlich gewünschten Parameterwerte verwenden
  • Für Personen mit nur teilweisen Berechtigungen werden die Parameter der Anfrage dynamisch angepasst, basierend auf den Informationen, die an den aktuellen Benutzer gebunden sind.


Zunächst wollte ich es durch einen Filter implementieren, aber es war zu umständlich, die Anfrageinhalte zu serialisieren und zu deserialisieren, und es erforderte auch viel logisches Urteilsvermögen und Leistungsverluste. Glücklicherweise bietet Spring eine AOP-gesichtsorientierte Funktionalität, die mit einfachem Code implementiert werden kann.

Zunächst muss das Maven-Projekt pom.xml das spring-boot-starter-aop-Paket wie folgt einführen:

Sobald das Paket eingeführt ist, können wir die AOP-Funktion nutzen, über@AspectAnmerkung.

Aspect unterstützt 5 Arten von Benachrichtigungsannotationen:

@Before: Pre-Benachrichtigung, die vor der Ausführung der Methode ausgeführt wird

@After: Nach der Benachrichtigung, ausgeführt nach Ausführung der Methode

@AfterRunning: Gibt eine Benachrichtigung zurück, die ausgeführt wird, nachdem die Methode ein Ergebnis zurückgegeben hat.

@AfterThrowing: Ausnahmebenachrichtigung, nachdem die Methode eine Ausnahme geworfen hat

@Around: Wraparound-Benachrichtigungen, rund um Methodenausführung

Erstellen Sie eine Request.java generische Request-Wrapper-Klasse:

Erstellen Sie eine neue UserInfo.java Anfrage spezifischer Datenklasse:

Wenn der aktuelle Anforderungskopf eine appid hat, wird der Wert des Anfrageparameters appId geändert, andernfalls wird der Anforderungsparameter nicht geändert, der Code lautet wie folgt:

Erstellen Sie einen neuen HomeController-Controller und fügen Sie eine Schnittstelle mit einem Anfrageparameter hinzu, der Request enthält<UserInfo>; der Code ist wie folgt:

Im Fall eines Tests ohne den appId-Anforderungskopf ist der Anfrageparameter appId der tatsächliche Wert und wurde nicht geändert, wie in der folgenden Abbildung gezeigt:



Wenn Sie versuchen, den appId-Anfrage-Header hinzuzufügen, sehen Sie, dass der appId-Anfrageparameter erfolgreich geändert wurde, wie in der folgenden Abbildung gezeigt:



Zum Schluss fügen Sie den Quellcode an:Der Hyperlink-Login ist sichtbar.





Vorhergehend:Verwenden Sie iPerf3, um die Netzwerkkommunikationsgeschwindigkeiten von Geräten zu testen
Nächster:Installation der iDRAC Service Module Software auf VMware ESXi
 Vermieter| Veröffentlicht am 06.11.2021 12:21:32 |
In Spring AOP konzentriert sich die Geschäftslogik ausschließlich auf das Geschäft selbst, indem sie Protokollierung, Leistungsstatistiken, Sicherheitskontrolle, Transaktionsverarbeitung, Ausnahmebehandlung usw. vom Geschäftslogikcode trennt, und durch die Trennung dieser Verhaltensweisen hoffen wir, sie in Methoden zu unterteilen, die die Geschäftslogik nicht steuern, und diese Verhaltensweisen zu ändern, ohne den Code der Geschäftslogik zu beeinflussen.
Veröffentlicht am 15.03.2023 11:11:04 |
zsdfghjkvbjnm
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com