java - 带有敏感信息的 Spring Boot 外部配置不起作用

标签 java spring spring-boot

我正在尝试将外部 yml 文件加载到我的 Spring Boot 应用程序中 在我的类路径上,我有 3 个用于 dev prod 和 tls 配置文件的 yml 文件。

我打算加载一个名为“secret.yml”的外部文件来覆盖 application-{profiles}.yml 文件上的值。

此“secret.yml”文件包含敏感信息。它将被添加到 gitignore 文件中。

经过一番尝试,我发现只有当我将名称更改为application-{profiles}.yml而不是secret.yml时,spring才不会覆盖类路径中的值

我尝试添加 spring.config.name=secret 但这对我不起作用。

./mvnw -Dmaven.test.skip=true -Dspring.config.additional-location=file:./secret.yml -Dspring.config.name=secret.yml

您有解决这个问题的方法吗?

[更新]

我导出环境变量export Secret="secret.yml" 然后将变量传递到我的命令行

./mvnw -Dmaven.test.skip=true -Dspring.config.additional-location=file:./secret -Dspring.config.name=secret

没有任何改变

最佳答案

如果您传递多个配置文件,请注意顺序,最后一个将按顺序覆盖前一个配置。

-Dspring.config.location=classpath:application-1.yaml,classpath:application-2.yaml .. other config

如果它们具有相同的配置,application-2.yaml 的值将被覆盖到 application-1.yaml 中。

**这将针对不同的配置进行合并。

关于java - 带有敏感信息的 Spring Boot 外部配置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60073117/

相关文章:

Java:空白字符是如何表示的?

java - 使用 CipherOutputStream 的递归加密给出一个空字节[]

java - 解决跨站点脚本问题时遇到问题

java - 如何使用现有对象作为构造函数参数在 spring 中实例化 bean

spring - 使用 JSR-303 验证器代替 Spring 验证器

java - Spring Hibernate : Entity seems not persisted, 也没有失败

spring - 在 spring mvc Controller 中设置区域设置

java - 如何将 Spring SecurityContext 传递给 RestAssured

mysql - Liquibase 不在 MySQL/MariaDB 上执行 SQL,而是在 Spring Boot 中执行 H2

java - 在 Spring Boot/Angular 中存储/更新图像以及实体数据