【问题标题】:AspectJ Around call, including method body after method callAspectJ 环绕调用,包括方法调用后的方法体
【发布时间】:2021-03-29 15:30:14
【问题描述】:

所以我试图在 Java AspectJ 中实现类似于 kotlin 协程的东西

目前我正在尝试在调用 Waitable.waitFor() 的方法调用时拦截方法 并且 Waitable.waitFor() 之后方法体中的所有内容都应该被调度

但是在我目前的代码中,它只是拦截了方法调用,并没有包含之后的方法体

所以我想知道我的切入点表达式代码错了吗?或者有什么更好的方法来实现这一点?

@Around("call(* org.imanity.framework.wait.Waitable.waitFor(..))")
public Object waitCall(ProceedingJoinPoint joinPoint) throws Throwable {
    Scheduler.runAfter(() -> joinPoint.proceed(), Long.parseLong(joinPoint.getArgs()[0]));
}

【问题讨论】:

    标签: java aspectj


    【解决方案1】:

    调用后无法捕获方法体。

    想象你能做到。

    1. 如何处理循环?
    2. 局部变量将存储在哪里?

    PS:有一个项目 Loom 旨在为 java 添加协程。

    PS:我们必须尽我们所能阻止那个项目,这是一个巨大的错误。

    【讨论】:

    • 你是对的,aspectJ 是不可能做到这一点的,但是我想知道为什么 project loom 是一个错误?
    • 他们尝试引入新功能而不是修复现有功能。如果他们可以使新线程更便宜,为什么他们不只是修复旧线程。
    • 明白,我会尝试阅读更多关于他们的文档,感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    相关资源
    最近更新 更多