Советы по весенним аспектам выполняются дважды в приложении Grails - PullRequest
2 голосов
/ 25 февраля 2011

У меня есть приложение grails, и я добавил совет @After по методу обслуживания grails

class OrderManagementService {

    static transactional = true

    public void confirmOrder() {


    }
}


@Aspect
public class NotVeryUsefulAspect {


    @Pointcut("execution(* OrderManagementService.confirmOrder())")
    public void orderManagementConfirmOrder(){}

    @After("orderManagementConfirmOrder()")
    public void doSomething(){
        System.out.println("My First Advice is working :-)");
    }


    @Around("orderManagementConfirmOrder()")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("Around Method Invoked");
        return pjp.proceed();
    }
}

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

Метод Around, вызванный Метод Around, вызванный Мой первый совет работает :-) Мой первый совет работает: -)

Я думаю, что это связано с прокси CGLIB сервисов Grails

это мой resource.xml

aop:aspectj-autoproxy proxy-target-class="false"

bean id="myAspect" class="org.xyz.NotVeryUsefulAspect"


aop:config proxy-target-class="true"

внутри xml

кто-нибудь сталкивался с этим и есть решение, чтобы заставить его работать правильно ура

...