Spring引导从数据库外部化配置

Spring引导从数据库外部化配置,spring,spring-boot,Spring,Spring Boot,我有一个Spring引导应用程序,它使用default application.yml来定义配置属性。目前,该文件包含一些特定于环境的信息,如SMTP服务器详细信息,我希望将其外部化到数据库表中。我试图在这里修改为传统Spring应用程序提供的示例,但到目前为止没有成功 使用Spring Boot执行此操作的最佳方法是什么 Spring Boot和类似的部署平台推荐的方法是将特定于环境的覆盖作为linux环境变量提供 将它们存储在数据库中的一个缺点是,如果您备份生产数据库并将其恢复到其他环境中,

我有一个Spring引导应用程序,它使用default application.yml来定义配置属性。目前,该文件包含一些特定于环境的信息,如SMTP服务器详细信息,我希望将其外部化到数据库表中。我试图在这里修改为传统Spring应用程序提供的示例,但到目前为止没有成功


使用Spring Boot执行此操作的最佳方法是什么

Spring Boot和类似的部署平台推荐的方法是将特定于环境的覆盖作为linux环境变量提供

将它们存储在数据库中的一个缺点是,如果您备份生产数据库并将其恢复到其他环境中,它将尝试连接到生产邮件服务器/数据库等

通过Spring引导,任何属性都可以被环境变量覆盖


我自己做的另一件事,我很高兴,就是我把我的一些属性设置为一个特殊的值,比如“必须传入”或类似的东西,在启动时,我对所有属性进行循环,如果其中任何属性具有该值,我停止应用程序并打印出来。这样我保证不会忘记在环境中传递一些重写

看看这一点,我之前已经玩过SpringCloud,我觉得这对于我的场景来说有点太多了。在这种特殊情况下,我不希望仅为此运行单独的服务,也不希望为此设置Git回购。我的另一个要求是允许用户使用UI修改这些内容,因此我希望尽可能将其存储在数据库中。这种方法无法满足我的要求,即允许用户通过UI修改这些内容,但我想这是目前为止最好的答案。SMTP是一个糟糕的例子:)还有一些其他参数,我们想让管理员通过UI进行更改,比如我们有的一些调度器的cron表达式、调整日志级别等@YohanLiyanage,你应该公布你的答案和你的解决方法it@FedericoPiazza我们最终开始使用SpringCloudConfigServer。我们决定使用保存历史记录的Git后端是配置文件的理想选择。我们的应用程序的一些其他需求也发生了变化,我们还必须添加其他Spring云服务,因此Config Server成为了我们可行的解决方案。