Java 通知要重新创建的Springbean
我们有一个问题,需要强制使用配置xml文件中指定的初始配置重新创建spring会话beanJava 通知要重新创建的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"
所有自动连线的依赖项都应该指向新创建的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");
}