Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 包中的所有方法都不会调用我的@Around建议_Java_Spring_Aop_Aspectj - Fatal编程技术网

Java 包中的所有方法都不会调用我的@Around建议

Java 包中的所有方法都不会调用我的@Around建议,java,spring,aop,aspectj,Java,Spring,Aop,Aspectj,我在我的LoggingAspect类中有下面的代码,我希望它能为我的方法运行,比如 gov.ssa.rome.service.impl.save() gov.ssa.rome.dao.impl.save() 但无论如何,它只运行一次。我不知道为什么。我已经使用autowire将dao连接到服务层。我真的很感谢你的帮助 我应该如何使此方法在我的所有应用程序流中运行,以在日志中查看流 @Around("execution(* gov.ssa.rome..*.*(..))") public Objec

我在我的LoggingAspect类中有下面的代码,我希望它能为我的方法运行,比如

gov.ssa.rome.service.impl.save() gov.ssa.rome.dao.impl.save()

但无论如何,它只运行一次。我不知道为什么。我已经使用autowire将dao连接到服务层。我真的很感谢你的帮助

我应该如何使此方法在我的所有应用程序流中运行,以在日志中查看流

@Around("execution(* gov.ssa.rome..*.*(..))")
public Object log(ProceedingJoinPoint pjp) throws Throwable {

 System.out.println("aspect Around started");

        Object ret = pjp.proceed();

    System.out.println("aspect Around ended);

  return ret;
}

可以使用不同的技术创建方面。如果您的是JDK代理,那么它们只适用于接口中定义的方法。如果它们是cglib代理,那么它们将适用于除final方法之外的所有方法。我认为,如果匹配类实现接口,spring默认将使用JDK代理,否则将使用cglib代理

检查您的带有save方法的类的外观,以及save是否来自接口。您可以强制使用aspectjweaver代理使一切正常工作,但它们需要一些字节码操作。我建议坚持使用JDK代理,并在需要时创建/扩展接口。有关更多信息,请参阅spring文档AOP章节