如何重新初始化Spring Bean?

问题描述

你可以通过三种方法在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值属性。但是它具有非常有限的特定目的。参考资料,以了解更多信息。

解决方法

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

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