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