Spring AOP против Aspecj

Возможный дубликат:
Spring AOP против AspectJ

Я читаю весенний справочный документ. В этом написано

  1. Если вам нужен доступ к полю и точки соединения обновления, рассмотрите такой язык, как AspectJ.
  2. Есть кое-что, что вы не можете сделать с Spring AOP, например, советовать очень мелкие объекты (такие как объекты домена), AspectJ - лучший случай для работы с ним.
  3. Что такое компилятор AspectJ или ткач?

Я не понял значения трех вышеперечисленных пунктов и, следовательно, запутался. Пожалуйста, поясните на простом примере.


person user900721    schedule 27.07.2012    source источник


Ответы (3)


Ваш первый пункт просто означает, что вы можете применять точечные сокращения только на уровне метода, перехват поля не реализован в Spring-aop.

Следующий пункт говорит о том, что вы не можете добавлять советы по объектам домена (которые являются простыми объектами pojo),

Последнее касается переплетения, переплетение - это встраивание аспектов в объекты в весеннем XML-файле так же, как JavaBean. ИЛИ просто скажем, ткачество - это добавление нового байт-кода в ваш класс java, чтобы сделать его пригодным для использования во фреймворке.

person Bruce_Wayne    schedule 27.07.2012

AFAIK Spring AOP поддерживает не все функции AspectJ, а только ограниченный набор. Например, Spring AOP поддерживает только точечные срезы на уровне метода, поэтому, если вам нужен мелкозернистый контроль (то есть на уровне поля), вам нужно использовать AspectJ изначально.

person davioooh    schedule 27.07.2012

также есть более важное различие - AspectJ может вводить материал AOP во время компиляции (например, с подключением aspectj maven), Spring AOP только во время выполнения с использованием cglib или javasist в соответствии с версией spring. Однако, как правило, вы все равно предпочли бы пружинный АОП - просто потому, что это намного проще ...

person Andrey Borisov    schedule 27.07.2012