Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通知要重新创建的Springbean_Java_Spring_Spring Mvc - Fatal编程技术网

Java 通知要重新创建的Springbean

Java 通知要重新创建的Springbean,java,spring,spring-mvc,Java,Spring,Spring Mvc,我们有一个问题,需要强制使用配置xml文件中指定的初始配置重新创建spring会话bean 所有自动连线的依赖项都应该指向新创建的bean。这在Spring框架中有可能实现吗?或者您可以建议任何方法来实现这一点吗?我建议在您的上下文中创建另一个临时bean,并在您的条件案例中使用它。不幸的是,我必须调用getBean()方法来重新分配对临时bean的引用 例如: 在配置文件中,必须定义两个bean: <bean id="originalBean" class="x.y.z.MyBean"

我们有一个问题,需要强制使用配置xml文件中指定的初始配置重新创建spring会话bean


所有自动连线的依赖项都应该指向新创建的bean。这在Spring框架中有可能实现吗?或者您可以建议任何方法来实现这一点吗?

我建议在您的上下文中创建另一个
临时
bean,并在您的条件案例中使用它。不幸的是,我必须调用
getBean()
方法来重新分配对临时bean的引用

例如:

在配置文件中,必须定义两个bean:

<bean id="originalBean" class="x.y.z.MyBean" />
<bean id="temporaryBean" class="x.y.z.MyBean" />
在您的条件用例中,您将重新将该引用分配给
temporaryBean

if(conditioalCase) {
    myBean = ApplicationContext.getBean("temporaryBean");
}

您可以尝试ConfigurableApplicationContext.refresh()、使http会话无效或不使用会话作用域(我更喜欢这个)。另外,还不清楚为什么需要这样做。@white假设它是应用程序上下文bean。ConfigurableApplicationContext.refresh()是否还会刷新依赖于此bean的所有自动关联依赖项?另外,我认为这会导致一些性能和内存泄漏问题ConfigurableApplicationContext.refresh()将在上下文中重新创建所有单例,是的,不建议使用它,除非您完全确定自己在做什么。如果你描述你的问题,而不是你试图解决它的方式,那会更好。
if(conditioalCase) {
    myBean = ApplicationContext.getBean("temporaryBean");
}