我有一个grails应用程序,我在grails服务方法上添加了@After建议
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();
}
}
然而,当执行此方法时,这两个建议都被调用两次,因此在我有
的输出中围绕方法调用 围绕方法调用 我的第一个建议是:-) 我的第一个建议是: - )
我认为这与grails服务的CGLIB代理有关
这是我的resource.xml
aop:aspectj-autoproxy proxy-target-class="false"
bean id="myAspect" class="org.xyz.NotVeryUsefulAspect"
aop:config proxy-target-class="true"
xml内部
任何人遇到这个并有一个解决方案,使其正常工作欢呼