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

标签 java spring tomcat aspectj proxy-classes

我计划使用 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 jar ,可以直接引用它。
  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。

关于java - 指定正确的 spring-instrument agent jar 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35135572/

相关文章:

java - 如何在 thymeleaf 模板中打印 java 对象?

java - 在 tomcat 中屏蔽 WAR 文件和端口

java - tomcat和提取的文件

java - 多级继承中的多个抽象类

java - 在 AWS Lambda : java. lang.Exception 上运行 JUnit 测试:没有可运行的方法

java - spring ws配置wsdl生成策略?

java - 如何在 Spring 中使用 MongoRepository 在 mongodb 中 findOneAndDelete

java - Spring AOP 命名切入点到底是如何工作的?有何用途?

java - IllegalAccessError 仅在导出的签名 APK 上

java - Maven 部署到 Tomcat7(响应 403)未正确使用给定插件