如何重新初始化春豆?

2022-09-03 01:40:01

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

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


答案 1

您有三个选项可以在春季环境中更新单例Bean,您可以选择一个适合您的用例的选项:

Reload 方法 在 Bean
中创建一个方法,该方法将更新/重新加载其属性。根据您的触发器,从弹簧上下文中访问bean,然后调用reload方法来更新bean属性(自单例以来),它也将在spring上下文中更新,并且无论它在哪里都是自动连接的/注入的。

在注册表
中删除和注册Bean您可以使用来删除和重新注册Bean。唯一的缺点是,它不会刷新/重新加载消费者类中已经自动连接/注入的bean的旧实例。DefaultSingletonBeanRegistry

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

@RefreshScope
对于从配置更改中刷新 Bean 值属性非常有用。但它有非常有限和特定的目的。资源以阅读更多相关信息。


答案 2

推荐