当前位置: 首页 > 知识库问答 >
问题:

如何重新初始化Spring bean?

翁烨霖
2023-03-14

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

共有1个答案

谭泉
2023-03-14

在spring上下文中,您有三个选项来更新单例bean,您可以选择一个适合您的用例:

Bean中的重新加载方法
在Bean中创建一个方法,该方法将更新/重新加载它的属性。根据触发器,从spring上下文访问bean,然后调用reload方法更新bean属性(因为是单例),它也将在spring上下文中更新&无论它在哪里被autowired/inject。

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

DefaultSingletonBeanRegistry registry = (DefaultSingletonBeanRegistry) context.getBeanFactory();
registry.destroySingleton({yourbean}) //destroys the bean object
registry.registerSingleton({yourbeanname}, {newbeanobject}) //add to singleton beans cache
 类似资料:
  • 问题内容: 是否可以在运行时重新初始化Spring Bean? 我的Bean使用静态设置,在某些情况下会更改,然后我必须重新初始化Bean。 问题答案: 你可以通过三种方法在spring上下文中更新单例bean,可以选择一种适合你的用例: 在Bean中重新加载方法在Bean中 创建一个方法,该方法将更新/重新加载其属性。根据你的触发器,从spring上下文访问bean,然后调用reload方法更新

  • 我正在处理一个自动化的hashicorp保险库进程,我需要重复运行保险库操作符init命令,因为试错测试,我试图卸载保险库并再次安装,但似乎这并没有删除以前的解封密钥+根令牌,我该如何做到这一点? 我在某个地方读到,我需要删除存储“文件”路径,我已经删除了,但它不起作用(实际上我的/opt/vault/data/目录是空的),下面是我的vault.hcl文件:

  • 问题内容: 我目前在 此URL实际上按照以下路由指示加载Module.js类: 这包含在index.js文件中定义的和元素中。 Module类具有和方法。这些设置了记录2的初始详细信息和装入信息。到目前为止一切正常。 现在,我的问题是,在Module.js的孙组件中,我使用以下Redirect重定向到另一个页面,例如第3页: 构造函数或componentWillMount无法运行,因此记录#3无法

  • 问题内容: 我正在使用jquery数据表在网格内显示数据。在初始化页面加载脚本中,请使用DateTime.Today并对其进行进一步处理,问题是在初始化页面加载后,当我尝试让用户输入日期以进行进一步处理时。我遇到以下错误。 DataTables警告(表ID =’dataTable’):无法重新初始化DataTable。 要检索此表的DataTables对象,请不传递任何参数,或参阅bRetriev

  • 问题内容: 如果您有一个控制器来操作Angular.js中的$ scope变量,是否有惯用的方法: 重置控制器的$ scope,然后 重新启动控制器初始化? 对于复杂的控制器,不必将每个变量都重置为其初始值将非常方便,特别是如果您真正想要的是对控制器和范围进行简单的重新初始化。通过再次导航到相同的URL 并没有帮助。 编辑:假设我不能使用任何黑客工具,因为这会违反Chrome打包应用中的CSP。

  • 问题内容: 在运行时,我经常创建/修改 log4j Logger,Appenders,Levels,Layouts,并且有时需要将所有内容重置为默认值。 Log4j 系统具有定义明确的 默认初始化过程 ,该 过程 在将 log4j 类加载到内存时执行。有什么方法可以稍后在运行时以编程方式重新执行整个过程吗? 我在 log4j 文档中找到了几种方法,但是不确定它们中的任何一种是否可以执行 默认初始化