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

如何在不重启应用服务器的情况下在spring中重新初始化Bean

吴经略
2023-03-14

我正在编程服务,从数据库中获取数据,并通过REST服务提供这些数据。它使用spring mvc。我的数据库连接配置在属性文件中,在上下文初始化期间,spring将其作为数据源bean从中加载。

现在我的问题是-我想更改属性文件中的配置(例如更改数据库信息),但我无法重新启动应用程序服务器,因此无法加载新配置。

如何重新初始化Spring上下文或一些特定的bean,以便使用新定义的属性?

共有1个答案

皇甫波峻
2023-03-14

如果您希望spring中有多个数据源,并且需要在运行时动态地确定适当的数据源,那么可以使用spring提供的AbstractRoutingDataSource来实现这一点。您必须实现查找键逻辑,以在方法determineCurrentLookupKey()中确定数据源。有了它,您可以在运行时将不同的bean映射到不同的数据源。以下是与此相关的几个问题。

如何在Spring中使用一个数据源以编程方式更改数据库?

而且

动态更改Spring数据源

 类似资料:
  • 我是新来的jboss服务器。我有jboss 4.2.3服务器。我在单个服务器上有很多应用程序。我需要在不重启jboss服务器的情况下部署我的应用程序。有可能吗?如果是这样,有哪些选择? 提前谢谢!!

  • 问题内容: 我正在用Java编写一个函数,该函数计算字符串中空格后的字符数。对于某些人来说,这个问题听起来微不足道。 现在,我想在for循环中重用此变量(位置),而无需在初始化语句中创建新的变量(i)。目前,我正在这样做。 问题答案: 您无需声明新变量: 您可以将for循环的任何字段保留为空白。 还是更好,为什么不呢?

  • 我们正在使用JBoss Enterprise Application Platform server(即JBoss EAP 6.1)来开发使用Logback进行日志记录的新web应用程序。我们已经使用JBoss EAP好几个月了,一切都很好。此外,正如您所知,您可以在运行时在JBOSS上部署和取消部署应用程序和配置文件(如mail service.xml),也就是说,无需重新启动服务器。 但是,如

  • 我们使用的是Spring Boot 2.3.4 我们有一些只需要应用程序的单元测试。要加载的属性(包括其所有配置文件管理aso)。在不启动完整的Spring Boot服务器的情况下可以做到这一点吗? 编辑: 我尝试了@SpringBootTest注释,但它总是启动整个服务器,因为我引用了@SpringBootApplication类(或者它是自动引用的)。实际上,您不需要所有其他注释,比如@Con

  • 应用程序以,我有一个NPM脚本,它运行以下配置 按预期编译为,但是如果不使用重新启动服务器,刷新页面时看不到更改。 我可能遗漏了一些东西,也许spring-boot使用的不是我的文件而是某种副本?

  • 问题内容: 是否可以在运行时重新初始化Spring Bean? 我的Bean使用静态设置,在某些情况下会更改,然后我必须重新初始化Bean。 问题答案: 你可以通过三种方法在spring上下文中更新单例bean,可以选择一种适合你的用例: 在Bean中重新加载方法在Bean中 创建一个方法,该方法将更新/重新加载其属性。根据你的触发器,从spring上下文访问bean,然后调用reload方法更新