java 如何重新初始化Spring Bean?

rjee0c15  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(202)

是否可以在运行时重新初始化SpringBean?
我的Bean使用静态设置,在某些情况下会发生变化,然后我必须重新初始化bean。

d5vmydt9

d5vmydt91#

在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

@刷新范围

用于从配置更改中刷新bean值属性。但它有非常有限的特定用途。Resource阅读更多关于它的信息。

相关问题