【发布时间】:2015-02-20 18:35:53
【问题描述】:
我想为我的域类使用 spring 依赖注入,这些类可能不是在 spring 上下文中创建的。这就是为什么我用@Configurable 注释对这些类进行注释,并尝试设置加载时间编织。我的弹簧配置是:
@SpringBootApplication
@EnableSpringConfigured
@EnableAspectJAutoProxy
@EnableCaching(mode = AdviceMode.ASPECTJ)
@EnableLoadTimeWeaving
public class WebApplication extends WebMvcConfigurerAdapter
这可以正常工作,但前提是我的 @Configurable 类与我的主 Spring Boot 应用程序在同一个 JAR 中。但是我想在 JAR 中添加我的 @Configurable 域类,作为主应用程序的依赖项。
我试过这个,但看起来加载时间编织不适用于外部 JAR。您对如何解决这个问题有什么建议吗?
编辑
我已将 -verbose:class 添加到我的 JVM 选项中,并且我发现外部 JAR 中的类在 LoadTimeWeaving 配置和初始化之前由类加载器加载。并且在需要时加载不在外部 JAR 中的类,即在 LoadTimeWeaving 初始化之后。
所以基本上我的问题是:
是否可以在加载外部 JAR 之前初始化 LTW?或者是否可以在配置 LTW 后重新加载(或进行 AspectJ 增强)类?
编辑 2
我发现了为什么我的外部 jar 中的类在 LTW 初始化之前加载的原因。这是因为这些类也使用@Entity 注释进行了注释。因此,它们是在 LTW 初始化之前发生的休眠初始化期间加载的。
所以最后一个问题是::D
如何假设 LTW 在休眠(可能还有其他)初始化之前被初始化?
【问题讨论】:
标签: spring spring-boot aspectj load-time-weaving