小编典典

如何重新初始化Spring Bean?

spring

是否可以在运行时重新初始化Spring Bean?

我的Bean使用静态设置,在某些情况下会更改,然后我必须重新初始化Bean。


阅读 3617

收藏
2020-04-21

共1个答案

小编典典

你可以通过三种方法在spring上下文中更新单例bean,可以选择一种适合你的用例:

在Bean中重新加载方法在Bean中
创建一个方法,该方法将更新/重新加载其属性。根据你的触发器,从spring上下文访问bean,然后调用reload方法更新bean属性(自单例以来),它也将在spring上下文中以及在自动装配/注入的任何地方进行更新。

在注册表中删除并注册Bean
可以DefaultSingletonBeanRegistry用来删除并重新注册Bean。这样做的唯一缺点是,它不会刷新/重新加载使用者类中已经自动接线/注入的Bean的旧实例。

DefaultSingletonBeanRegistry registry = (DefaultSingletonBeanRegistry) context.getBeanFactory();
registry.destroySingleton({yourbean}) //destroys the bean object
registry.registerSingleton({yourbeanname}, {newbeanobject}) //add to singleton beans cache

@RefreshScope

用于刷新配置更改中的bean值属性。但是它具有非常有限的特定目的。参考资料,以了解更多信息。

2020-04-21