gpt4 book ai didi

java - 在 spring mvc 中的应用程序上下文中设置对象

转载 作者:行者123 更新时间:2023-12-01 18:49:50 24 4
gpt4 key购买 nike

我有一个实用程序类,我想在应用程序在 Spring MVC 中启动时对其进行初始化。所以我正在实现InitializingBean。现在我必须为其创建一个对象并将其保存在应用程序范围中,以便我可以在任何地方访问相同的实例。但我无法掌握这个。

这是我的尝试:

public class DashboardInitializer implements InitializingBean, ApplicationContextAware {

private ApplicationContext mApplication;

@Override
public void afterPropertiesSet() throws Exception {

initializeConfigurationUtil();

ConfigurationUtil util = ConfigurationUtil.getInstance();

/* Save the util to application scope */

}

@Override
public void setApplicationContext(ApplicationContext pApplication) throws BeansException {
this.mApplication = pApplication;
}
}

这种方法正确还是有更好的方法?

最佳答案

我认为你需要稍微简化一下。

您希望实用程序类在加载应用程序上下文后初始化,但您还希望您的 util 类位于应用程序上下文中?

似乎 util 类在应用程序上下文中配置了一些依赖对象,而 util 类又是应用程序上下文中某些类的依赖项。

如果你能以bean的形式表达这些依赖关系(util是一个bean,它的依赖bean被注入(inject)其中,需要util的bean也被注入(inject)util),Spring将确保util的所有依赖都被先初始化,然后初始化util,然后注入(inject)到需要util的类中。

您不应该尝试向已初始化的上下文添加某些内容。这是不可能的。

如果你无法将util及其依赖项表达为bean,你也可以采取这种方法:1.将util配置为应用程序上下文中的bean,添加一个不执行任何操作的默认构造函数。因此,当加载 spring 上下文时,该对象将被创建,但不会被初始化。

  1. 在您拥有的 ApplicationContextAware 实现中,修改 setApplicationContext 方法。从上下文中获取您之前配置的 util bean。

  2. 您现在可以初始化(执行您想要执行的一些代码)util 实例,只需确保您不会尝试将该 bean 重新分配给 util 的其他实例。

希望这有帮助。

关于java - 在 spring mvc 中的应用程序上下文中设置对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16212241/

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