我希望对域类使用spring依赖注入,这些类可能不是在spring上下文中创建的。这就是为什么我用@Configurable注释对这些类进行注释,并尝试设置加载时编织。我的弹簧配置是:
@SpringBootApplication
@EnableSpringConfigured
@EnableAspectJAutoProxy
@EnableCaching(mode = AdviceMode.ASPECTJ)
@EnableLoadTimeWeaving
public class WebApplication extends WebMvcConfigurerAdapter这很好,但前提是我的@Configurable类与我的主要Spring应用程序在同一个JAR中。但是,我希望将我的@Configurable域类作为主应用程序的依赖项添加到JAR中。
我尝试过这样做,但是看起来加载时间编织不适用于外部JAR。你对如何解决这个问题有什么建议吗?
编辑
我已经将-verbose:class添加到我的JVM选项中,并且我发现在配置和初始化LoadTimeWeaving之前,来自外部JAR的类是由类加载器加载的。并在需要时加载外部JAR中没有的类,即LoadTimeWeaving init之后。
所以基本上我的问题是:
是否可以在加载外部JAR之前初始化LTW?或者在配置了LTW之后是否可以重新加载(或使AspectJ增强)类?
编辑2
我发现了为什么我来自外部jar的类在LTW init之前被删除了。这是因为这些类还带有@Entity注释。因此,它们是在hibernate初始化过程中加载的,在LTW init之前。
最后一个问题是:D
如何假设LTW是在hibernate (可能还有其他)初始化之前初始化的?
发布于 2015-02-21 19:17:56
好的,我有个解决办法。)我感到悲哀的是spring初始化的顺序。因此,我简单地必须确保加载时间编织器在hibernate之前被初始化。简单地将LoadTimeWeaver注入我的配置类是解决办法:
@Autowired
private LoadTimeWeaver loadTimeWeaver;编辑
另一种解决方案是除了spring之外,还添加aspectjweaver.jar作为javaagent。
https://stackoverflow.com/questions/28635891
复制相似问题