我想知道是否有可能重新创建在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,这可能会给您带来更多控制权。

09-25 20:14