我想知道是否有可能重新创建在Web应用程序启动时已经在Java配置中创建的bean。
我要做的是重新配置bean设置。
例如,我创建了具有数据库路径的新bean:
@Bean
public TestBean getTestBean() {
TestBean tb = new TestBean("some_path_taken_from_external_point");
return tb;
}
在运行时,我想更改路径。假设该bean没有数据库路径的setter方法。
我将有某种事件和该事件的侦听器。侦听器应使用新路径重新初始化TestBean。
这可能吗?
我在想某种包装纸。在这种情况下,我将使用TestBeanWrapper类,该类将具有方法get(),该方法将返回TestBean实例,并具有recreate(String path),该方法将使用给定的路径创建新对象。
我不确定此类包装程序是否对我有用,因为TestBean是外部库中的类,并且不确定是否未将其注入到某处(但可能未注入)。
更有可能的是其他bean可能依赖于TestBean,因此还必须重新初始化它们(以防它们没有我的TestBean的设置器)。
在Spring(4.1)中甚至可能吗?这种情况下最好的方法是什么?
最佳答案
因此,我仍然不确定为什么要更改路径,但是我有2条建议:
1.查看在Bean上设置范围。
通过在Bean上设置作用域,可以基于上下文重新生成Bean。有关更多信息,请参见Bean Scopes。
2.查看也许使用控制器或服务。
控制器和服务允许使用getter和setter,这可能会给您带来更多控制权。