Požiadavky: Projekt musí dynamicky upravovať parametre požiadavky, priraďovať hodnoty parametrom požiadavky podľa aktuálnych oprávnení používateľa, pred vstupom parametrov do metódy kontroléra musí byť dokončená úprava parametrov požiadaviek a keď kontrolér volá servisnú vrstvu, parametre požiadavky môžu byť použité ako podmienky na dotazovanie a úpravu dát. Existujú dva prípady požiadavky na parametre:
- Pre používateľov s vysokými oprávneniami môžete použiť skutočné požadované hodnoty parametrov
- Pre ľudí s iba čiastočnými oprávneniami sa hodnoty parametrov požiadavky dynamicky menia na základe informácií viazaných na aktuálneho používateľa
Najprv som to chcel implementovať cez filter, ale bolo príliš zdĺhavé serializovať a deserializovať obsah požiadaviek, a tiež to vyžadovalo veľa logického úsudku a straty výkonu. Našťastie Spring poskytuje AOP funkcionalitu orientovanú na tváre, ktorú je možné implementovať jednoduchým kódom.
V prvom rade musí maven projekt pom.xml predstaviť balík spring-boot-starter-aop, a to nasledovne:
Keď je balík predstavený, môžeme použiť funkciu AOP, cez@Aspectanotácia.
Aspect podporuje 5 typov notácií:
@Before: Pred-oznámenie, ktoré sa vykonáva pred vykonaním metódy
@After: Po oznámení, vykonané po vykonaní metódy
@AfterRunning: Vráti upozornenie, ktoré sa vykoná po tom, čo metóda vráti výsledok
@AfterThrowing: Upozornenie na výnimku, po tom, čo metóda vyhodí výnimku
@Around: Wraparound notifikácie, okolo vykonávania metódy
Vytvorte Request.java generickú triedu obalu požiadaviek:
Vytvorte novú UserInfo.java požiadajte o špecifickú dátovú triedu:
Ak má aktuálna hlavička požiadavky appid, hodnota parametra požiadavky appId bude upravená, inak parameter požiadavky nebude upravený, kód je nasledovný:
Vytvorte nový HomeController radič a pridajte rozhranie s parametrom požiadavky obsahujúcim Request<UserInfo>, kód je nasledovný:
V prípade testovania bez hlavičky požiadavky appId je parameter požiadavky appId skutočnou hodnotou a nebol upravený, ako je znázornené na nasledujúcom obrázku:
Ak sa pokúsite pridať hlavičku požiadavky appId, uvidíte, že parameter požiadavky appId bol úspešne upravený, ako je znázornené na nasledujúcom obrázku:
Nakoniec pripojte zdrojový kód:Prihlásenie na hypertextový odkaz je viditeľné.
|