Как Spring Core использует Spring AOP? - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь понять, что такое Spring AOP и как он работает. Я не могу ответить на следующие вопросы:

  1. Одна из причин, по которой Spring AOP не используется по сравнению с AspectJ, заключается в том, что Spring AOP не может добавить аспект к чему-либо, что не создано Spring. завод. Что это значит? Разве все не создано из Spring Factory?
  2. Как Spring Core использует модуль Spring AOP «за кулисами»?
  3. Что означает «Spring AOP на основе прокси»?

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Одна из причин, по которой Spring AOP не используется по сравнению с AspectJ, заключается в том, что Spring AOP не может добавить аспект к чему-либо, что не создано фабрикой Spring. Что это значит? Разве все не создано из Spring Factory?

Короче говоря, Spring создает прокси для bean-компонентов в контейнере и полагается на эти прокси для реализации AOP.

Относительно сравнение с AspectJ:

Из справочных документов Spring.io:

"...

Таким образом, например, функциональность AOP Spring Framework обычно используется вместе с контейнер Spring Io C. Аспекты настраиваются с использованием обычного синтаксиса определения bean-компонента (хотя это позволяет использовать мощные возможности «автоматического проксирования»). Это принципиальное отличие от других реализаций AOP. Некоторые вещи не могут быть легко или эффективно выполнены с помощью Spring AOP, например, советуют очень мелкозернистые объекты (как правило, доменные объекты). AspectJ - лучший выбор в таких случаях. Однако наш опыт показывает, что Spring AOP предоставляет отличное решение для большинства проблем в приложениях Java предприятия, которые поддаются обработке. к АОП.

Весна АОП никогда не стремится к Совместно с AspectJ, чтобы обеспечить комплексное решение АОП. Мы считаем, что как основанные на прокси фреймворки, такие как Spring AOP, так и полноценные фреймворки, такие как AspectJ, ценны и дополняют друг друга, а не конкурируют. Spring полностью интегрирует Spring AOP и Io C с AspectJ, чтобы обеспечить все виды использования AOP в согласованной архитектуре приложений на основе Spring. Эта интеграция не влияет на API Spring AOP или API AOP Alliance. Spring AOP остается обратно совместимым. См. Следующую главу для обсуждения API-интерфейсов Spring AOP. "

Что означает" Spring AOP на основе прокси "? Как Spring Core использует модуль Spring AOP" за кулисами " ?

На основе прокси означает, что bean-объекты обернуты в другом объекте (прокси-сервере), который распознает вызовы объекта и может воздействовать на этот перехват перед вызовом реального метода для обернутого объекта.

Существует два способа реализации этого: один использует java Dynami c Proxys (Reflection), другой использует CGLIB, библиотеку, которая добавляет возможность прокси на уровне байт-кода.

Spring.io справочные документы AOP
Статья о Proxys

0 голосов
/ 11 апреля 2020

Вы должны прочитать это для сравнения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...