java - @AspectJ。 scala(可能还有 java)lambdas 的切入点

标签 java scala aspectj

是否可以为 scala lambda 设置 poitcut?如果我没记错的话,scala lambdas 现在的编译方式与 java lambdas 相同,所以我认为我的问题也适用于 java lambdas,但我不确定。

这是代码。基本上我想建议 Runnable 实例。如果我使用类或匿名类,它会完美地工作,但如果我使用 lambda,它就不起作用。

  @Around("execution(* (com.test..* && java.lang.Runnable+).run())")
  def runnableAspect(pjp: ProceedingJoinPoint): Any = {
    println("Runnable caught")
    pjp.proceed()
  }

下面是测试代码:

package com.test

class Greet {

  def hello(): Unit = {
    println("-----start--------")
    run(new Runnable {
      override def run(): Unit = println("anonymous class")
    })
    println("------------------")
    run(() => println("lambda"))
    println("-----end--------")

  }

  private def run(r: Runnable) = r.run()

}

输出是:

-----start--------
Runnable caught
anonymous class
------------------
lambda
-----end--------

有可能吗?如果是,我做错了什么?

最佳答案

基于 this回答。

Java

@Around("execution(void com.test..lambda*(..)) || execution(* (com.test..* && java.lang.Runnable+).run())")

对于斯卡拉

@Around("execution(void com.test..$anonfun*(..)) || execution(* (com.test..* && java.lang.Runnable+).run())")

关于java - @AspectJ。 scala(可能还有 java)lambdas 的切入点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45883654/

相关文章:

java - 关闭和打开数据库连接?

java - Boost Asio io_service,从客户端读取消息

scala - Scala 中的 PartialFunction 类型推断

java - 没有 @EnableAspectJAutoProxy,Spring AOP 能工作吗?

java - spring boot 在 json 响应中包含 OneToMany 关联

scala - 集群 Akka/Scala actor

scala - 使用 Scala 在元素前面添加替代/更好的方法

java - 带有spectj和tapestry 5的NoAspectBoundException

java - Spring AOP 不工作

java odbc Foxpro