[英]Does aspectj have access to implicit parameters on a method in Scala?
我正在使用AspectJ進行一些用戶身份驗證。 將userId作為方法的隱式參數將是非常好的。 但是我不知道AspectJ joinPoint是否可以看到隱式參數。
還有其他人嘗試嗎?
提供服務
class User(val name: String) {
override def toString = s"$name"
}
class Service {
def run()(implicit user: User) {
println(user.name)
}
隱式參數只是作為類文件中的“正常”參數出現(從javap
輸出):
public class app.scala.Service extends java.lang.Object{
public void run(app.scala.User);
public app.scala.Service();
}
因此使用“正常” AspectJ切入點,例如:
before(Service s, User user) :
call(void Service.run(User)) && target(s) && args(user) {
System.out.println("Hello from AspectJ (before service run)");
System.out.println(" " + user);
}
有效(適用於scalac
生成的.class文件)。
從Aspectj的角度來看,隱式參數沒什么特別的。 Scala編譯器將多個參數列表中的參數合並為一個,並將其存儲在.class文件中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.