使用AspectJ的Spring AOP-加载时间编织的疑问

时间:2019-02-18 11:32:20

标签: spring spring-boot aspectj spring-aop

阅读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,这是事实。 但是,对于本示例,我们使用   Java代理(Spring随附)以打开LTW。我们使用   以下命令运行前面显示的Main类:

然后他们将Java Agent应用于JVM。

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

现在我有几个疑问。

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

Jar的命名有点模糊,首先提到org.springframework.instrument-{version}.jar,然后使用spring-instrument.jar,然后再使用 <button onClick={props.taskEditApprove(props.listrole, task.id)}>OK</button>
我们总是在谈论相同的Jar文件吗?

1 个答案:

答案 0 :(得分:0)

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

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