对于Java中的检测,为什么java.lang.instrument
比AspectJ更受欢迎,尽管两者都同等地完成了检测工作。使用java.lang.instrument
有什么特别的优势吗?提前谢谢......
答案 0 :(得分:3)
这是两件完全不同的事情。 Instrumentation
API为JVM运行时提供了一个钩子,允许Java代理访问JVM的更高级功能。它还为JVM的类加载提供了一个钩子,可以在加载类时通知代理并重新定义其类文件。类似地,可以重新定义/重新转换已经加载的类。
AspectJ是一个库,它提供了有关重新定义现有类的更高级别视图。它适用于点切割和连接点来解释如何重新定义类。然后,AspectJ的重新定义可以在编译时在Maven之类的工具中应用,或者AspectJ可以使用Java agebt和instrumentation API在运行时应用类的重新定义。
答案 1 :(得分:1)
由于AspectJ是AOP实现的字节码操作,因此比较AOP framewors更好。例如。 AspectJ vs Spring AOP。 java.lang.instrument
不是AOP框架。