Spring boot Spring启动添加运行时属性

Spring boot Spring启动添加运行时属性,spring-boot,spring-jdbc,Spring Boot,Spring Jdbc,我正在寻找一种解决方案,当DB密码更改而不重新启动时,SpringBoot可以重新创建新的数据源 spring.datasource.url=url spring.datasource.username=usr spring.datasource.password=passwordExample无代码 spring.datasource.driver类名=oracle.jdbc.driver.OracleDriver 我已经定义了这样的数据源。实现这一目标的最佳方法是什么。这里有一个关于如何做这

我正在寻找一种解决方案,当DB密码更改而不重新启动时,SpringBoot可以重新创建新的数据源

spring.datasource.url=url spring.datasource.username=usr spring.datasource.password=passwordExample无代码 spring.datasource.driver类名=oracle.jdbc.driver.OracleDriver


我已经定义了这样的数据源。实现这一目标的最佳方法是什么。

这里有一个关于如何做这类事情的好博客


基本上,您可以对返回带有@RefreshScope的数据源的方法进行注释,更改外部化配置SpringCloudConfig服务器中的配置值,然后通过调用SpringBootActuator公开的刷新端点来触发应用程序的刷新事件

是否可以在启动应用程序时创建所有连接池,即使更改了密码。以前的连接仍然有效。这与Spring或JDBC无关,甚至事实上也没有关系。当前使用连接的任何代码都可能仍然有效,但在销毁该池并创建新连接之前,必须非常小心地确保所有现有连接都已关闭并返回到池中。您可能需要一些自定义代码,其中包含一组数据源,并将旧数据源标记为对新连接无效,对新连接的请求仅使用最新代码。谢谢Paul。我想澄清的问题是。我在启动应用程序时创建了一个数据源,连接池为10个连接。之后,如果我的数据库密码发生更改。我的旧连接池还能工作吗?可能,但这取决于jdbc驱动程序和数据库的交互方式。应足够容易测试:-