Spring aop перехватывает звонки из того же класса обслуживания

У меня такой же сценарий, как упоминалось в

Spring метод @Transaction вызов методом из того же класса не работает?

Я имел в виду ответ №1, который, как я думал, сработает для моего простого класса pojo, но этого не произошло. В моем случае у меня нет аннотации @Transaction. Это простой класс pojo. Я хочу перехватить каждый метод adduser, а также adduser с помощью spring aop, если я возьму пример в сообщении выше.

Можно ли перехватить метод, который вызывается из того же вызова службы? Я имел в виду AspectJAwareProxy, который помогает, но не решает проблему в целом. Я имею в виду, что не хочу, чтобы что-то добавлялось к моей бизнес-логике. Поэтому я хочу избежать кодирования, кроме определения pointcut и определения рекомендаций. Возможно ли использование Java и Spring AOP? Я использую CGlib для создания прокси. Версия Spring - 3.0.5.

Спасибо, Аджай


person Ajay    schedule 07.09.2011    source источник
comment
Не <tx:annotation-driven mode="aspectj"/> работает?   -  person Bozho    schedule 08.09.2011


Ответы (1)


Чтобы это работало, вы должны использовать плетение во время загрузки вместо прокси. Причина в том, что Spring использует прокси для достижения функциональности АОП (например, поддержки транзакций). Находясь внутри экземпляра класса, любые вызовы методов в том же экземпляре будут направлены непосредственно против фактического объекта экземпляра, а не прокси-сервера-оболочки, поэтому советы АОП не будут рассматриваться. Ткачество во время загрузки работает иначе. Там у вас есть внешний java-агент, который манипулирует классами на уровне байтового кода, чтобы внедрить поддержку АОП.

Вам нужно будет

1. Измените свою командную строку java, используемую для включения агента spring aspectj.

2: добавить

<context:load-time-weaver aspectj-weaving="on" />
<tx:annotation-driven mode="aspectj" />

к твоей весенней кофиг.

Читать далее:

AspectJ Load Time Weaving с помощью Spring Transaction Manager и Maven

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-aj-ltw

person pap    schedule 08.09.2011