Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 28258|Odpowiedź: 2

[Źródło] Praktyczne działanie: AOP w Spring Boot dynamicznie modyfikuje wartość parametru żądania

[Skopiuj link]
Opublikowano 06.11.2021 12:15:55 | | | |
Wymagania: Projekt musi dynamicznie modyfikować parametry żądania, przypisywać im wartości zgodnie z uprawnieniami aktualnego użytkownika, zanim parametry wejdą do metody kontrolera, modyfikacja parametrów żądań musi zostać ukończona, a gdy kontroler wywoła warstwę usługową, parametry żądań mogą być użyte jako warunki do zapytań i modyfikacji danych. Istnieją dwa przypadki żądania parametrów:

  • Dla użytkowników z wysokimi uprawnieniami można użyć rzeczywistych żądanych wartości parametrów
  • Dla osób posiadających tylko częściowe uprawnienia wartości parametrów żądania są dynamicznie modyfikowane w zależności od informacji powiązanych z aktualnym użytkownikiem


Na początku chciałem zaimplementować to przez filtr, ale serializacja i deserializacja zawartości żądań była zbyt uciążliwa, a także wymagało to dużej logicznej oceny i utraty wydajności. Na szczęście Spring oferuje funkcjonalność AOP zorientowaną na twarze, którą można zaimplementować prostym kodem.

Przede wszystkim projekt maven pom.xml musi wprowadzić pakiet spring-boot-starter-aop, w następujący sposób:

Po wprowadzeniu pakietu możemy korzystać z funkcji AOP, przez@Aspectadnotacja.

Aspect obsługuje 5 typów adnotacji powiadomień:

@Before: Pre-notification, które jest wykonywane przed wykonaniem metody

@After: Post-powiadomienie, wykonywane po wykonaniu metody

@AfterRunning: Zwraca powiadomienie, które jest wykonywane po zwróceniu wyniku przez metodę

@AfterThrowing: Powiadomienie o wyjątku, po wyrzuceniu przez metodę wyjątku

@Around: Powiadomienia wokół instrukcji, wokół wykonywania metod

Stwórz Request.java ogólną klasę oklejania żądań:

Stwórz nową UserInfo.java zażądać konkretnej klasy danych:

Jeśli aktualny nagłówek żądania ma appid, wartość parametru żądania appId zostanie zmodyfikowana, w przeciwnym razie parametr żądania nie zostanie zmodyfikowany, a kod wygląda następująco:

Stwórz nowy kontroler HomeController i dodaj interfejs z parametrem żądania zawierającym Request<UserInfo>, a kod wygląda następująco:

W przypadku testów bez nagłówka żądania appId, parametr żądania appId jest rzeczywistą wartością i nie został zmodyfikowany, jak pokazano na poniższym rysunku:



Jeśli spróbujesz dodać nagłówek żądania appId, zobaczysz, że parametr żądania appId został pomyślnie zmodyfikowany, co pokazano na poniższym rysunku:



Na koniec dołącz kod źródłowy:Logowanie do linku jest widoczne.





Poprzedni:Użyj iPerf3 do testowania prędkości komunikacji sieciowej urządzeń
Następny:Zainstaluj oprogramowanie modułu usługowego iDRAC na VMware ESXi
 Ziemianin| Opublikowano 06.11.2021 12:21:32 |
W Spring AOP logika biznesowa skupia się wyłącznie na samym biznesie, dzieląc logowanie, statystyki wydajności, kontrolę bezpieczeństwa, przetwarzanie transakcji, obsługę wyjątków itp. od kodu logiki biznesowej, a poprzez oddzielenie tych zachowań mamy nadzieję rozdzielić je na metody, które nie kierują logiką biznesową, a następnie zmieniać te zachowania bez wpływania na kod logiki biznesowej.
Opublikowano 15.03.2023 11:11:04 |
zsdfghjkvbjnm
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com