Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 28258|Відповідь: 2

[Джерело] Практична робота: AOP у Spring Boot динамічно змінює значення параметра запиту

[Копіювати посилання]
Опубліковано 06.11.2021 12:15:55 | | | |
Вимоги: Проєкт має динамічно змінювати параметри запиту, призначати значення параметрам запиту відповідно до дозволів поточного користувача, перед тим, як параметри потраплять у метод контролера, необхідно завершити зміну параметрів запиту, а коли контролер викликає сервісний рівень, параметри запиту можуть використовуватися як умови для запиту та зміни даних. Існує два випадки запиту параметрів:

  • Для користувачів із високими привілеями можна використовувати фактично запитувані значення параметрів
  • Для людей із лише частковими правами значення параметрів запиту динамічно змінюються залежно від інформації, пов'язаної з поточним користувачем


Спочатку я хотів реалізувати це через фільтр, але було надто громіздко серіалізувати та десеріалізувати контент запитів, а також вимагало багато логічного судження та втрати продуктивності. На щастя, Spring надає функціонал AOP, орієнтований на обличчя, який можна реалізувати простим кодом.

По-перше, pom.xml проєкту Maven має представити пакет spring-boot-starter-aop, а саме:

Після впровадження пакету ми можемо використовувати функцію AOP через@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
 Орендодавець| Опубліковано 06.11.2021 12:21:32 |
У весняному AOP бізнес-логіка зосереджується лише на самому бізнесі, розділяючи логування, статистику продуктивності, контроль безпеки, обробку транзакцій, обробку винятків тощо від бізнес-логічного коду, і, розділяючи ці поведінки, ми сподіваємося розділити їх на методи, які не керують бізнес-логікою, а потім змінювати ці поведінки, не впливаючи на код бізнес-логіки.
Опубліковано 15.03.2023 11:11:04 |
zsdfghjkvbjnm
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com