смешивание пружинного АОП и аспектя компилятора? - PullRequest
3 голосов
/ 29 ноября 2011

У меня есть существующий проект, построенный на весне.

Я бы хотел отлавливать вызовы HibernateTemplate.save (), поэтому я определяю pointcut для exec (save ()) и записываю время в краткий совет.

Я мог бы определить аспекты с помощью Spring AOP, но я вижу, что Spring AOP работает, только если объект в pointcut является бином, но в моем случае HibernateTemplate может быть создан в new () непосредственно в существующем клиенте код.

поэтому я должен использовать компилятор aspectj через плагин maven. Интересно, есть ли потенциальные конфликты для смешивания Spring AOP и aspectj? ---- предыдущие разработчики этого проекта, возможно, уже использовали Spring AOP где-то

Спасибо Ян

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Я обычно использую AspectJ вместо Spring-Proxy-AOP для всех моих приложений Spring.Для этого вам нужно установить некоторую пружинную конфигурацию, в основном установить что-то вроде mode="AspectJ".Когда я забыл об этом для некоторых из этих конфигураций, это означало, что приложение использовало AspectJ для некоторых аспектов и Spring-Proxy-AOP для других, и да, приложение работало корректно (за исключением случаев, когда мне действительно нужен AspectJ вместо pring-ProxyАОП).

Итак, с моей точки зрения: если у вас достаточно тестов, попробуйте их.

0 голосов
/ 30 ноября 2011

Это будет хорошо работать.Я делал это много раз.Я всегда начинаю с Spring AOP, потому что он прост и начинает использовать AspectJ, только если мне нужны некоторые функции, не предоставляемые Spring AOP.

Мои единственные советы - максимально использовать стиль @AspectJ, чтобы выможет легко измениться с небольшими изменениями конфигурации.

Если вы новичок в стиле аннотаций, вы можете найти больше информации о нем в блоге Эспена Бернтсена, @ AspectJ шпаргалка

...