java – 如何重新初始化Spring Bean?
作者:互联网
是否可以在运行时重新初始化Spring Bean?
My Bean使用静态设置,在某些情况下会更改,然后我必须重新初始化bean.
解决方法:
您有四个选项可以在spring上下文中更新singleton bean,您可以选择一个适合您的用例:
重新加载方法在Bean中
在bean中创建一个方法,用于更新/重新加载其属性.根据你的触发器,从spring上下文访问bean,然后调用reload方法来更新bean属性(因为singleton)它也将在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值属性.但它非常有限&特殊的目的. Resource阅读更多相关信息.
标签:java,spring,spring-boot,spring-bean 来源: https://codeday.me/bug/20190927/1823935.html