Различия между нагрузкой и временем плетения между аспектом-ткачихой и ткацкой пружиной - PullRequest
2 голосов
/ 22 июня 2011

У меня странные проблемы с использованием пружины и ткачества при загрузке с использованием AspectJ.В одном из моих Apsects я хотел отреагировать на вызов метода «doAuthentication» класса org.springframework.flex.security3.SpringSecurityLoginCommand.Поэтому я создал метод:

@Around("execution(* org.springframework.flex.security3.SpringSecurityLoginCommand.doAuthentication(..))")
public Object aroundDoAuthentication(ProceedingJoinPoint pjp) throws Throwable {
...

Этот аспект сплетен правильно, если я использую агент aspectj-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?

Крис

1 Ответ

0 голосов
/ 22 июня 2011

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

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

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

...