[Хорошее интервью] Spring-Aop вы должны знать

Java

[Точка галантерейных товаров] Это 10-я статья из серии [Хорошее интервью]. Прочитав эту статью, вы сможете понять принципы использования и принципы АОП в Spring, а также сможете легко ответить на вопросы, связанные с АОП, на собеседовании.

В реальных исследованиях и разработках Spring - это фреймворк, который мы часто используем. Ведь они слишком популярны. Поэтому на собеседованиях также требуются очки знаний, связанных со Spring. Сегодня мы поговорим об Aop. Твитнул особенно по выходным, потому что эта статья относительно легко читается и остроумна.Конечно, важнее то, что по выходным я тоже заряжаюсь и учусь. Надеюсь, что друзья, у которых есть занятия, постараются не отпускать выходные Время и зарядка должным образом Чтобы достичь вершины жизни, женитесь на Бай Фумэй. 【Есть ли какое-нибудь знакомство с Бай Фумэй(о≖◡≖)】

Далее переходим непосредственно к тексту.

почему аоп

Все мы знаем, что Java — это язык объектно-ориентированного программирования [то есть ООП]. Надо сказать, что объектно-ориентированное программирование — это превосходный дизайн, но ни один язык не может быть совершенным. Когда объект представлен общественности часть, ООП представит много повторяющегося кода [этот код мы можем назвать сквозным кодом]. И потому появился Аоп, да,АОП призван компенсировать недостатки ООП.. Aop инкапсулирует эти междисциплинарные коды в многократно используемый модуль, тем самым уменьшая связь между модулями, что также способствует последующему обслуживанию.

что такое АОП

Любой, кто изучал Spring, знает, что основные функции Spring — это Ioc и Aop.Основная функция Ioc — развязка между объектами приложения, а Aop может реализовывать сквозной код (такой как разрешения, логи и т. д.) и связывать их с ними.Развязывание между определенными объектами, как простой для понимания маленький каштан, где пользователи вызывают много интерфейсов, нам всем нужно сделать аутентификацию разрешений, чтобы определить, есть ли у пользователя разрешение на вызов интерфейса, если каждый интерфейс имеет свой собственный Чтобы сделать подобную обработку, это немного sb, и недостаточно установить x, поэтому Aop может пригодиться, разложить эти коды обработки в слайсы, определить слайсы, точки подключения и уведомления, и запустить их ojbk.

Чтобы понять Aop, вы должны сначала понять следующие термины, такие как PointCut, Advice и JoinPoint. Затем постарайтесь максимально подробно описать его на родном языке.

PointCut [точка разреза]Фактически, концепция остриемой точки хорошо понята, ему придется знать, где вы хотите ударить, прежде чем вы хотите что-то порезать, точечный формат отсечения выглядит следующим образом: выполнение (* com.nuofankj.springdemo .aop.Service.(..)) Видно, что формат использует нормальные выражения для определения классов в этой области, и эти интерфейсы будут рассматриваться как pointcut, что просто и понятно.

AdviceМногие люди в индустрии консультирования определяют это как уведомление, но я всегда чувствую себя немного неохотно. Так называемый Advice на самом деле определяет, когда вызывается Aop.У него есть ощущение уведомления.Когда он вызывается, на самом деле это просто следующее:

  • Прежде чем вызывается метод
  • After вызывается после завершения метода
  • After-return вызывается после успешного выполнения метода
  • After-throwing вызывается после того, как метод выдает исключение
  • Вокруг вызывается до и после вызова уведомленного метода

JoinPoint [точка соединения]Точка подключения JoinPoint на самом деле очень проста для понимания.На ней есть уведомления и точки касания.Какая точка связи с конкретным бизнесом? Да, это фактически объект метода, соответствующий бизнесу, потому что нам может понадобиться использовать конкретные данные в конкретном методе в сквозном коде, и точка подключения может это сделать.

Приведите сценарий применения АОП на практике

Сначала дайте два интерфейса в бизнесе, один болтает, другой покупает вещи

图片描述
图片描述
Далее пришло время дать кусочки, которые были сказаны так долго.
图片描述
Вы можете видеть, что PointCut [точка отсечки]

execution(* com.nuofankj.springdemo.aop.Service.(..))

Совет

Before

JoinPoint [точка соединения]

MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod();

Код прост для понимания, по сути он заключается в том, чтобы извлечь логику проверки прав доступа для userId в ChatService и BuyService и разбить их на слайсы.

Итак, как получить конкретные параметры в конкретном бизнес-методе? Здесь определена новая аннотация

图片描述
Роль можно увидеть прямо в комментариях, места использования следующие
图片描述
Вы можете видеть, что соответствующий интерфейс использует аннотацию AuthPermission, и место для ее извлечения —
图片描述
Да, таким образом вы можете вынуть конкретный userId, переданный соответствующим интерфейсом, и логика проверки может справиться с этим самостоятельно.

Отправить Будду на Запад, нет, просто смахнуть весь набор, а потом отдать основной класс операции

图片描述
Можно видеть, что userId, переданный одним интерфейсом, равен 1, а другой — 123, и указанная выше проверка подлинности разрешает только 1 для прохождения, иначе будет выдано исключение.

Текущий результат выглядит следующим образом

图片描述
Ходовые результаты можно себе представить, 1 прошел проверку, 123 не прошли.

Анализ принципа Аоп

Что касается анализа принципов, так как все не любят читать слишком длинные статьи, мы планируем разделить его на две статьи.В следующей статье будут рассмотрены принципы и идеи дизайна АОП.Заинтересованные друзья могут подписаться на меня.

logo