繁体   English   中英

如何重新初始化Spring Bean?

[英]How to reinitialize a Spring Bean?

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

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

您可以通过三种方法在春季上下文中更新单例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值属性很有用。 但是它具有非常有限的特定目的。 参考资料,以了解更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM