Spring在Grails应用程序中执行了两次
我有一个grails应用程序,并且在grails服务方法上添加了@After建议Spring在Grails应用程序中执行了两次,grails,spring-aop,Grails,Spring Aop,我有一个grails应用程序,并且在grails服务方法上添加了@After建议 class OrderManagementService { static transactional = true public void confirmOrder() { } } @Aspect public class NotVeryUsefulAspect { @Pointcut("execution(* OrderManagementService.conf
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内部
任何人遇到这个问题,都能找到正确的解决方案。干杯我也遇到过同样的问题——我必须在不使用“执行”的情况下解决它——明天我会尝试一下。干杯效果很好。戴夫干杯,如果你想让它成为一个让你的代表站起来的答案