【问题标题】:Spring boot add runtime propertySpring Boot 添加运行时属性
【发布时间】:2017-10-11 12:07:01
【问题描述】:

我正在寻找一种解决方案,当更改数据库密码而不重新启动时,spring boot 重新创建新数据源。

spring.datasource.url=url spring.datasource.username=usr spring.datasource.password=passwordexampleno code spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

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

【问题讨论】:

    标签: spring-boot spring-jdbc


    【解决方案1】:

    https://spring.io/guides/gs/centralized-configuration/https://spring.io/guides/gs/centralized-configuration/ 有一篇关于如何做这类事情的好博客

    基本上,您使用 @RefreshScope 注释返回数据源的方法,更改外部配置(Spring Cloud Config 服务器)中的配置值,然后通过调用 Spring Boot 执行器公开的刷新端点为您的应用程序触发刷新事件。

    【讨论】:

    • 是否有可能在启动应用程序时创建所有连接池,即使更改密码也是如此。以前的连接仍然有效。
    • 这实际上与 Spring 或 JDBC 无关。当前正在使用连接的任何代码都可能仍然有效,但是在销毁该池并创建新连接之前,您必须非常小心确保所有现有连接都已关闭并返回到池中。您可能需要一些自定义代码,其中您拥有一组数据源并将旧的数据源标记为对新连接无效,而对新连接的请求仅使用最新代码。
    • 谢谢保罗。我想澄清的问题是。我在使用 10 个连接的连接池启动我的应用程序时创建了一个数据源。之后,如果我的数据库密码发生更改。我的旧连接池还能工作吗?
    • 可能,但这取决于 jdbc 驱动程序和数据库的交互方式。应该很容易测试:-)
    猜你喜欢
    • 1970-01-01
    • 2019-02-04
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 2012-09-16
    • 2020-12-03
    相关资源
    最近更新 更多