Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 28258|Отговор: 2

[Източник] Практическа работа: AOP в Spring Boot динамично променя стойността на параметъра за заявка

[Копирай линк]
Публикувано в 6.11.2021 г. 12:15:55 ч. | | | |
Изисквания: Проектът трябва динамично да модифицира параметрите на заявката, да присвоява стойности на параметрите на заявката според разрешенията на текущия потребител, преди параметрите да влязат в метода на контролера, трябва да бъде завършена промяната на параметрите на заявката, а когато контролерът извика слоя на услугата, параметрите на заявката могат да се използват като условия за запитване и промяна на данните. Има два случая на заявяване на параметри:

  • За потребители с високи права можете да използвате реалните стойности на параметъра, които са поискани
  • За хора с частични права, стойностите на параметрите на заявката се променят динамично според информацията, свързана с текущия потребител


Първоначално исках да го реализирам чрез филтър, но беше твърде тромаво да сериализирам и десериализирам съдържанието на заявките, а също така изискваше много логическо преценяване и загуба на производителност. За щастие, Spring предоставя функционалност, ориентирана към лице, ориентирана към AOP, която може да се реализира с прост код.

Първо, проектът Maven pom.xml трябва да въведе пакета spring-boot-starter-aop, както следва:

След въвеждането на пакета можем да използваме функцията AOP, чрез@Aspectанотация.

Aspect поддържа 5 вида анотации за известия:

@Before: Предварително известие, което се изпълнява преди изпълнението на метода

@After: След известие, изпълнявано след изпълнението на метода

@AfterRunning: Връща известие, което се изпълнява след като методът връща резултат

@AfterThrowing: Известие за изключение, след като методът издаде изключение

@Around: Обгръщащи известия, свързани с изпълнението на метода

Създайте Request.java генеричен обвивка на заявка:

Създайте нов UserInfo.java заявка за специфичен клас данни:

Ако текущият заглавен елемент на заявката има appid, стойността на параметъра appId ще бъде променена, в противен случай параметърът на заявката няма да бъде променян, кодът е следният:

Създайте нов контролер за HomeController и добавете интерфейс с параметър за заявка, съдържащ Request<UserInfo>, кодът е следният:

В случай на тестване без заглавието на заявката appId, параметърът appId е действителната стойност и не е бил променян, както е показано на следващата фигура:



Ако опитате да добавите заглавие за заявка appId, ще видите, че параметърът appId е успешно променен, както е показано на следната фигура:



Накрая, прикачете изходния код:Входът към хиперлинк е видим.





Предишен:Използвайте iPerf3 за тестване на скоростите на мрежова комуникация на устройствата
Следващ:Инсталирайте софтуер за iDRAC Service Module на VMware ESXi
 Хазяин| Публикувано в 6.11.2021 г. 12:21:32 ч. |
В пролетния AOP бизнес логиката се фокусира само върху самия бизнес, разделяйки логването, статистиката за производителността, контрола на сигурността, обработката на транзакции, обработката на изключения и др. от кода на бизнес логиката, и чрез разделяне на тези поведения се надяваме да можем да ги разделим на методи, които не насочват бизнес логиката, и след това да променим тези поведения, без да влияем на кода на бизнес логиката.
Публикувано в 15.03.2023 г. 11:11:04 ч. |
zsdfghjkvbjnm
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com