Java 包中的所有方法都不会调用我的@Around建议
我在我的LoggingAspect类中有下面的代码,我希望它能为我的方法运行,比如 gov.ssa.rome.service.impl.save() gov.ssa.rome.dao.impl.save() 但无论如何,它只运行一次。我不知道为什么。我已经使用autowire将dao连接到服务层。我真的很感谢你的帮助 我应该如何使此方法在我的所有应用程序流中运行,以在日志中查看流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
@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章节