首页 > 解决方案 > 如何从代码而不是我的 application-dev.yml、application-prod.yml 初始化属性

问题描述

我的 springboot 应用程序有一些 yml 文件(每个文件用于各种配置文件 - dev、prod)来加载配置。我正在将配置移至数据库。

示例配置就像,

admin:
  id: user05
  firstname: Brian
  lastname: Leavy
  purl: http://plixes.com/seai/ji

我有从数据库读取的值并在本地保存。我不确定如何在我的程序中将这些值注入到这些值中,例如键值,例如,

admin.id:user05
admin.firstname: Brian
admin.lastname: Leavy
admin.purl: http://plixes.com/seai/ji

以便它们可以像通常那样用于应用程序。我需要很早就初始化它们,因为其中一些值是 springboot 配置,比如,

server:
  port: 5007

任何指针都会非常有帮助。

编辑1:

经过几个小时的搜索,我才发现你可以做这样的事情,

SpringApplication app = new SpringApplication(Lexon.class);
app.setDefaultProperties(Collections
                       .singletonMap("server.port", "5007"));
app.setDefaultProperties(Collections
                       .singletonMap("admin.id", "user05"));

这有效,但看起来不干净。

有一个更好的方法吗?

标签: javaspring-bootconfiguration

解决方案


Spring Boot 配置库可以将配置外部化到数据库或 git 存储库。

这样,您就可以添加一个数据源和一个 SQL 语句来检索属性值。

例如,在 application.yml 上:

spring:
  cloud:
    config:
      server:
        jdbc:
          sql: SELECT KEY, VALUE from  MY_PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?

查看此站点以获取更多详细信息:https ://www.devglan.com/spring-cloud/jdbc-backend-spring-cloud-config


推荐阅读