【发布时间】:2016-01-15 10:24:52
【问题描述】:
我在 Spring MVC 框架的应用程序中实现了 AspectJ。我可以跟踪函数调用的入口点和出口点,但无法从源文件中获取实际的行号。它显示了 Logger 类的行号放置切入点和建议的位置。
【问题讨论】:
-
发布示例堆栈跟踪?我在调试 Spring AOP 代码时从来没有遇到过问题。
我在 Spring MVC 框架的应用程序中实现了 AspectJ。我可以跟踪函数调用的入口点和出口点,但无法从源文件中获取实际的行号。它显示了 Logger 类的行号放置切入点和建议的位置。
【问题讨论】:
也许你的问题类似于this one,所以希望你的解决方案是一样的:
joinPoint.getSourceLocation().getLine()
这适用于真正的 AspectJ(通过 LTW),但可能不适用于 Spring AOP,它只是某种基于代理的“AOP lite”框架。有关如何为 AspectJ 配置 Spring 的更多信息,请参阅用户手册,10.8, Using AspectJ with Spring applications 部分。
【讨论】:
我不知道这个任务是否有特殊的 AspectJ 功能,如果没有,那么你可以获取 StackTrace 然后使用StackTraceElement.getLineNumber()。
//StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
Exception e =...
e.getStackTraceElement[]
stackTrace[stackTrace.length - 1].getLineNumber();
【讨论】: