У меня возникают странные проблемы с использованием spring и Load-Time-Weaving с использованием AspectJ. В одном из моих апсектов я хотел реагировать на вызовы метода «doAuthentication» класса org.springframework.flex.security3.SpringSecurityLoginCommand. Поэтому я создал метод:
@Around("execution(* org.springframework.flex.security3.SpringSecurityLoginCommand.doAuthentication(..))")
public Object aroundDoAuthentication(ProceedingJoinPoint pjp) throws Throwable {
...
Этот аспект сплетается правильно, если я использую агента aspectj-weaver, но игнорируется, если я использую spring-weaver. К сожалению, мне приходится использовать spring-weaver, если я хочу правильно интегрировать аспект-пружину. Единственный способ, которым я обнаружил, что мой аспект сплетен, - это сплести его вокруг каждого метода целевого класса и программно фильтровать вызовы аспекта:
@Around("execution(* org.springframework.flex.security3.SpringSecurityLoginCommand.*(..))")
public Object aroundDoAuthentication(ProceedingJoinPoint pjp) throws Throwable {
final String methodName = pjp.getSignature().getName();
if("doAuthentication".equals(methodName)) {
...
Используя приведенный выше код, мне удалось правильно сплести все, но я не удовлетворен этим, так как мне кажется, что это большой взлом.
Может ли кто-нибудь объяснить, почему с помощью Spring-Weaver я не могу плести так же, как с помощью aspectj-weaver?
Крис