gpt4 book ai didi

java - 我的 @Around 建议不会被包中的所有方法调用

转载 作者:行者123 更新时间:2023-11-30 05:11:02 25 4
gpt4 key购买 nike

我的 LoggingAspect 类中有下面的代码,我希望它可以为我的方法运行

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

但无论如何它只运行一次。我不知道为什么。我已经使用 autowire 将 dao 连接到 service 层。我非常感谢您的帮助。

我应该怎样做才能让这个方法对我的所有应用程序流运行以查看日志中的流?

@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 代理,它们将仅适用于接口(interface)中定义的方法。如果它们是 cglib 代理,它们将适用于除 final方法之外的所有方法。我认为如果匹配的类实现了一个接口(interface),spring 默认会使用 JDK 代理,否则使用 cglib 代理。

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

关于java - 我的 @Around 建议不会被包中的所有方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com