Различия между загрузкой-время-ткачеством между aspectj-weaver и spring-weaver

У меня возникают странные проблемы с использованием 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?

Крис


person Christofer Dutz    schedule 22.06.2011    source источник


Ответы (1)


Я не знаю кода, но это похоже на тот же старый вопрос.

Spring AOP основан на прокси-сервере по умолчанию.

Это означает, что через прокси проходят только вызовы методов, поступающих извне. Следовательно, только этот вызов может инициировать рекомендацию AOP.

person Ralph    schedule 22.06.2011
comment
Что ж, у меня есть следующий код в моем spring sonfig, и поэтому я должен был заставить Spring динамически создавать прокси: истинный/> - person Christofer Dutz; 24.06.2011