gpt4 book ai didi

spring - 从与 Spring 同时加载的非 spring 组件访问 Spring 上下文

转载 作者:行者123 更新时间:2023-12-04 18:28:54 30 4
gpt4 key购买 nike

我正在开发的很酷的企业应用程序正在转向 Spring。这对所有团队来说都是非常酷和令人兴奋的练习,但也是一个巨大的压力源。我们所做的是逐渐将遗留组件移至 Spring 上下文。现在我们有一个 huuuge,我的意思是,huuuuge 组件对 spring-ify 来说不是小菜一碟,同时它需要访问一些 Spring bean。

现在问题来了:这个组件是在应用程序启动时加载的(或 Bootstrap ,无论你喜欢什么!)。这意味着这个人和 Spring 本身之间存在竞争条件,所以有时当我从那个非 Spring 怪物中访问上下文时,我会得到很好的 NPE。这基本上意味着在我们需要那个上下文的时候,它还没有初始化!

您可能很好奇我们究竟是如何访问上下文的:答案是——这是一个标准的 AppContextProvider 模式。

public class ApplicationContextProvider implements ApplicationContextAware {

private static ApplicationContext ctx;


public void setApplicationContext(ApplicationContext applicationContext) {
ctx = applicationContext;
}

public static ApplicationContext getApplicationContext() {
return ctx;
}

}

在这种情况下,对我来说理想的解决方法是告诉 Spring 通知非 Spring 组件“好的,我起来了!”,然后执行所有需要上下文的操作。这真的可能吗?

提前致谢!

最佳答案

使应用程序上下文对非 spring beans 可用的正确方法是使用 ContextSingletonBeanFactoryLocator .

看看this answer了解更多详情。

关于spring - 从与 Spring 同时加载的非 spring 组件访问 Spring 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8443382/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com