指定正确的 spring-instrument agent jar 的最佳实践
Best practice in specifying the correct spring-instrument agent jar
我计划使用 AspectJ 的加载时编织功能在基于 Spring 的 Web 应用程序中进行代理。使这项工作所需的三件事 (AFAIK) 是:
- 将代理模式设置为“
aspectj
”(相对于“proxy
”)
- 将
spring-aspects
和 aspectjweaver
添加到类路径
- 将
spring-instrument
代理添加到 VM 启动
我的问题是关于如何实现#3 的最佳实践。我担心的原因是:
- 因为在应用程序启动时需要它,所以我不能让它指向我的 web 应用程序
WEB-INF/lib
位置中的 spring-instrument jar。我正在考虑在我的 CATALINA_HOME/lib
中放置一个静态 spring-instrument
罐子,可以直接引用它。
- 随着web应用的进行,可能会出现spring版本升级的情况,我们可能会忘记升级
CATALINA_HOME/lib
中的jar版本。
- 许多不同的应用程序可能使用相同的
CATALINA_HOME
,并不总是可以让每个人都以锁步方式升级 spring-instrument
jar。
由于这个问题似乎很普遍,我想从其他人那里了解他们是如何解决这个问题的。
谢谢!
根据容器的不同,您不需要 spring-instrumentation.jar
。配置中的单个 <context:load-time-weaver />
就足够了。
您需要 Tomcat(版本 8)、Jetty、WebSphere、Weblogic 或 JBoss 的最新版本。
我计划使用 AspectJ 的加载时编织功能在基于 Spring 的 Web 应用程序中进行代理。使这项工作所需的三件事 (AFAIK) 是:
- 将代理模式设置为“
aspectj
”(相对于“proxy
”) - 将
spring-aspects
和aspectjweaver
添加到类路径 - 将
spring-instrument
代理添加到 VM 启动
我的问题是关于如何实现#3 的最佳实践。我担心的原因是:
- 因为在应用程序启动时需要它,所以我不能让它指向我的 web 应用程序
WEB-INF/lib
位置中的 spring-instrument jar。我正在考虑在我的CATALINA_HOME/lib
中放置一个静态spring-instrument
罐子,可以直接引用它。 - 随着web应用的进行,可能会出现spring版本升级的情况,我们可能会忘记升级
CATALINA_HOME/lib
中的jar版本。 - 许多不同的应用程序可能使用相同的
CATALINA_HOME
,并不总是可以让每个人都以锁步方式升级spring-instrument
jar。
由于这个问题似乎很普遍,我想从其他人那里了解他们是如何解决这个问题的。
谢谢!
根据容器的不同,您不需要 spring-instrumentation.jar
。配置中的单个 <context:load-time-weaver />
就足够了。
您需要 Tomcat(版本 8)、Jetty、WebSphere、Weblogic 或 JBoss 的最新版本。