指定正确的 spring-instrument agent jar 的最佳实践

Best practice in specifying the correct spring-instrument agent jar

我计划使用 AspectJ 的加载时编织功能在基于 Spring 的 Web 应用程序中进行代理。使这项工作所需的三件事 (AFAIK) 是:

  1. 将代理模式设置为“aspectj”(相对于“proxy”)
  2. spring-aspectsaspectjweaver 添加到类路径
  3. spring-instrument 代理添加到 VM 启动

我的问题是关于如何实现#3 的最佳实践。我担心的原因是:

  1. 因为在应用程序启动时需要它,所以我不能让它指向我的 web 应用程序 WEB-INF/lib 位置中的 spring-instrument jar。我正在考虑在我的 CATALINA_HOME/lib 中放置一个静态 spring-instrument 罐子,可以直接引用它。
  2. 随着web应用的进行,可能会出现spring版本升级的情况,我们可能会忘记升级CATALINA_HOME/lib中的jar版本。
  3. 许多不同的应用程序可能使用相同的 CATALINA_HOME,并不总是可以让每个人都以锁步方式升级 spring-instrument jar。

由于这个问题似乎很普遍,我想从其他人那里了解他们是如何解决这个问题的。

谢谢!

根据容器的不同,您不需要 spring-instrumentation.jar。配置中的单个 <context:load-time-weaver /> 就足够了。

您需要 Tomcat(版本 8)、Jetty、WebSphere、Weblogic 或 JBoss 的最新版本。