首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外部JAR中的Spring - @Configurable类

外部JAR中的Spring - @Configurable类
EN

Stack Overflow用户
提问于 2015-02-20 18:35:53
回答 1查看 554关注 0票数 0

我希望对域类使用spring依赖注入,这些类可能不是在spring上下文中创建的。这就是为什么我用@Configurable注释对这些类进行注释,并尝试设置加载时编织。我的弹簧配置是:

代码语言:javascript
复制
@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 (可能还有其他)初始化之前初始化的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-21 19:17:56

好的,我有个解决办法。)我感到悲哀的是spring初始化的顺序。因此,我简单地必须确保加载时间编织器在hibernate之前被初始化。简单地将LoadTimeWeaver注入我的配置类是解决办法:

代码语言:javascript
复制
    @Autowired
    private LoadTimeWeaver loadTimeWeaver;

编辑

另一种解决方案是除了spring之外,还添加aspectjweaver.jar作为javaagent。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28635891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档