java - 如何从代码而不是从我的 application-dev.yml、application-prod.yml 初始化属性

标签 java spring-boot configuration

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

示例配置如下:

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

我从数据库读取值并将其保存在本地。我不知道如何将程序中的这些值注入(inject)到这些值上,例如键值,as,

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"));

这可行,但看起来不干净。

有更好的方法吗?

最佳答案

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

关于java - 如何从代码而不是从我的 application-dev.yml、application-prod.yml 初始化属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57167217/

相关文章:

wordpress - 在多站点 Wordpress 安装中将域 URL 从 https 更改为 http

java - 我可以限制另一个类可以在 Java 中调用的方法吗?

java - 如何检查一个数字是否超过100并返回它是多少?

java - 如何使用 Jsoup 从表中提取文本

java - 如何检查缓存何时为空并且我应该加载它

ubuntu - ASP.Net Core 3.1 API 在 Ubuntu : configuration keys always NULL 上由 Systemd 托管

java - 线程因 sleep 而暂停后会发生什么?

java - 如何使用 Spring Boot 将生成的 PDF 文件保存到 MySQL 数据库?

spring - 在spring配置客户端上配置多个服务器

exception - Hadoop作业未被杀死