在运行时重新初始化bean

时间:2014-12-17 19:38:34

标签: java spring initialization javabeans

我想知道是否有可能重新创建一个已经在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实例并重新创建(String path),它将创建具有给定路径的新对象。

我不确定这样的包装器是否适用于我,因为TestBean是一个来自外部库的类,我不确定它是不是注入某个地方(但可能没有注入)。

更可能的是,其他bean可能依赖于TestBean,因此它们也必须重新初始化(如果它们没有我的TestBean的setter)。

这在Spring(4.1)中是否可行?这种情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

所以我仍然不确定你为什么要改变路径,但我有2条建议:

<强> 1。看看在Bean上设置范围。 通过在bean上设置范围,您可以根据上下文重新生成bean。请查看Bean Scopes以获取更多信息。

<强> 2。看看可能使用控制器或服务。 控制器和服务允许可以为您提供更多控制的getter和setter。