Spring 5.2.x Web应用程序中的AspectJ加载时间编织无法编织某些bean

应用说明

我们有带有基于XML的Spring应用程序上下文的Spring( 5.1.11 )Web应用程序。项目相当大,我们大量使用组件扫描和xml描述来定义bean。 有几个方面为注释方法提供了一些建议。我们使用AspectJ定义和“加载时间编织”。

应用程序服务器-Caucho Resin 4.0.62(尽管在Tomcat 9.0.20上再现了相同的问题和行为)。

我们不使用“ -javaagent”来应用 aspectjweaver-1.9.4.jar spring-instrument-5.1.11.RELEASE.jar 。 如果您的应用程序服务器支持(https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#aop-aj-ltw-environments),则始终按照文档中的说明应用方面没有任何问题:

  

您可以简单地启用加载时编织,如前所述。

问题描述

已经迁移到Spring 5.2.1 ,我们注意到一些豆不再被编织。经过调查,结果发现 autoscan 中的bean不再收到外观建议。 看来classloader加载这些类的时间太早了(在将变压器应用于classloader之前),因此它们将不再被编织。

作为一个副作用,我们注意到通过注释配置定义的bean(如果它们被定义为没有接口)也不能被编织。可能是由于相同的原因-类加载太早。但是这个问题在5.2.1之前存在(至少在Spring 5.1.11上存在)。

如果在任何版本的弹簧加载中都应用了外部javaagent,则编织可以按预期进行。

申请重现问题

请在此处找到演示该问题的小型Web应用程序:https://github.com/densp/aspectj-in-spring521

问题

  1. 没有Javaagent的默认类加载器上的AspectJ LTW有什么问题? Spring 5.2.x或我的配置有问题吗?行为已改变!
  2. 在注解配置中跳过没有接口的类的编织是否正确?
  3. 您能推荐一些解决方法吗?太多的bean无法更改其定义和/或进行重构。另一方面,外部代理会导致启动慢得多...
ccxygc2008 回答:Spring 5.2.x Web应用程序中的AspectJ加载时间编织无法编织某些bean

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2970731.html

大家都在问