【问题标题】:Spring AOP with AspectJ - Load time weaving doubtsSpring AOP with AspectJ - Load time weaving 疑惑
【发布时间】:2019-02-18 11:32:20
【问题描述】:

阅读 Spring AOP 文档 (link),我很难理解这些段落(也许也因为英语不是我的母语)。

首先,我阅读

此外,在某些环境中,此支持支持加载时间 无需对应用服务器的任何修改进行编织 需要添加的启动脚本 -javaagent:path/to/aspectjweaver.jar 或(正如我们稍后在 本节) -javaagent:path/to/org.springframework.instrument-{version}.jar (以前称为spring-agent.jar)。

开发人员修改一个或多个构成应用程序上下文的文件 启用加载时编织

哪些文件? @Aspect 类和aop.xml 文件?


然后,当在同一小节中描述一个例子时,他们说

我们还有最后一件事要做。这部分的介绍确实说了 可以在每个ClassLoader 的基础上选择性地打开 LTW 与 Spring,这是真的。 但是,对于此示例,我们使用 用于开启 LTW 的 Java 代理(随 Spring 提供)。我们使用 以下命令运行前面显示的 Main 类:

他们将Java Agent 应用到 JVM。

-javaagent:C:/projects/foo/lib/global/spring-instrument.jar

现在我有几个疑问。

如果我@EnableLoadTimeWeaving,我需要spring-instrument Jar 文件作为Java Agent吗?
我想答案是肯定的,因为我们需要在加载之前将字节码添加到class 文件中。但我们将不胜感激。

Jar 命名有点模棱两可,首先他们提到spring-agent.jar,然后他们使用org.springframework.instrument-{version}.jar,然后是spring-instrument.jar
我们总是在谈论同一个 Jar 文件吗?

【问题讨论】:

    标签: spring spring-boot aspectj spring-aop


    【解决方案1】:

    我从您提出的另一个问题中看到,您正在使用 Spring Boot 并运行一个胖 jar。在这种情况下,您不需要@EnableLoadTimeWeavingspring-instrument(以前称为spring-agent)。如果您没有在不控制代理路径的应用服务器中运行,请忽略它们。

    我为您打开了一个关于文档中混淆的问题:https://github.com/spring-projects/spring-framework/issues/22429

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 2015-12-17
      • 2010-11-11
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多