Playframework 2.0 AspectJ在Play Framework 2.2.x中加载但忽略类

Playframework 2.0 AspectJ在Play Framework 2.2.x中加载但忽略类,playframework-2.0,aspectj,Playframework 2.0,Aspectj,我很难让AspectJ方面在Play 2.2.2框架中工作。这似乎是一个其他人也试图解决的问题(见),但到目前为止,我没有找到答案。 这就是我想做的: 我有一个PlayJava应用程序,我正在尝试为方法enter和方法leave跟踪构建@Trace注释。所以基本上,我想要一个用@Trace注释的方法来记录它的名称和输入参数,并在退出时记录结果。我认为使用AspectJ的AOP将是一种优雅的方法,以避免我的代码被log.debug(…)调用弄得乱七八糟 以下是我想到的方面: @方面 公共类日志方面

我很难让AspectJ方面在Play 2.2.2框架中工作。这似乎是一个其他人也试图解决的问题(见),但到目前为止,我没有找到答案。 这就是我想做的:

我有一个PlayJava应用程序,我正在尝试为方法enter和方法leave跟踪构建@Trace注释。所以基本上,我想要一个用@Trace注释的方法来记录它的名称和输入参数,并在退出时记录结果。我认为使用AspectJ的AOP将是一种优雅的方法,以避免我的代码被log.debug(…)调用弄得乱七八糟

以下是我想到的方面:

@方面
公共类日志方面{
私有静态记录器log=LoggerFactory.getLogger(LoggingAspect.class);
@切入点(“@注释(跟踪)”)
public void methodAnnotatedWithTrace(跟踪跟踪){}
@之前(“methodAnnotatedWithTrace(跟踪)”)
public void traceBefore(JoinPoint JoinPoint,Trace Trace){
debug(“输入-{}”,joinPoint.getSignature());
}
@返回后(“methodAnnotatedWithTrace(跟踪)”)
public void traceAfter(连接点连接点,跟踪跟踪){
debug(“Exiting-{}”,joinPoint.getSignature());
}
}
我在build.sbt文件中添加了以下依赖项:

libraryDependencies += "org.aspectj" % "aspectjweaver" % "1.8.1"
libraryDependencies += "org.aspectj" % "aspectjrt"     % "1.8.1"
我指定了以下aop.xml:


我还添加了aspectj weaver来播放选项:

set PLAY_OPTS=-javaagent:C:\\Users\\...\\play-2.2.2\\repository\\cache\\org.aspectj\\aspectjweaver\\jars\\aspectjweaver-1.8.1.jar
我用@Trace注释了我的方法:

@Trace
公共结果doSomething(字符串msg){…}
因此,在运行“播放测试”时,我得到以下输出:

就这些。我看不到痕迹。似乎注释被忽略了

我错过了什么


谢谢你的帮助

您的注释@Trace是否具有运行时保留?如果没有,则加载时编织时AspectJ将不会在类文件中看到它

顺便说一句,
@annotation(trace)
是注释匹配的一种非常普遍的形式,它尝试在任何类型的连接点上匹配注释,而不仅仅是方法。所以,若您读取或写入了一个带有注释的字段,或者处理了一个类型包含该注释的异常,那个么这些字段都会匹配。如果您确实调用了一个带有注释的方法,您将得到两次运行的通知,一次用于方法“call”,一次用于方法“execution”。您可能应该将匹配限制为您感兴趣的连接点类型:

执行(**(..)&&&@注释(跟踪)


现在我想您只是在注释方法,但四处挖掘注释的成本可能会很高,因此如果您将其限制为仅查看方法执行连接点,则可以加快过程。

谢谢您的建议!我将相应地更改切入点定义。顺便说一句:@Trace在我的情况下有运行时保留。在我的情况下,问题似乎是另一个问题。不过还是谢谢你。
[1@2a1ffa9f] info AspectJ Weaver Version 1.8.1 built on Saturday Jun 21, 2014 at 00:07:06 GMT
[1@2a1ffa9f] info register classloader sbt.classpath.ClasspathUtilities$$anon$1@2a1ffa9f
[1@2a1ffa9f] info using configuration /C:/Users/Stephanie/Documents/projects/zeitgenossen/target/scala-2.10/classes/META-INF/aop.xml
[1@2a1ffa9f] info register aspect aspects.LoggingAspect