SpringBoot:在 application.yaml 中动态设置属性

时间:2021-04-23 12:54:05

标签: spring properties

application.yaml 包含(例如)设置:

<div>
    <p>{{ ctx.schema.title }}</p>
    <iframe
        src="https://files.form.io/pdf/5692b91fd1028f01000407e3/file/1ec0f8ee-6685-5d98-a847-26f67b67d6f0.html?id=elr4tq&amp;builder=1"
        id="iframe-elr4tq" seamless="true" class="formio-iframe"></iframe>
    <p>cc</p>
</div>

我希望动态设置“applicationId”。 为此,我尝试使用 SpEl。但结果 SpEl 不能应用于 apllication.yaml。

我阅读了 yaml 的两种动态设置方式:

  1. 使用 pom.xml
  2. 使用环境变量

但是这种方式不适用于我的情况:它是一个 gradle 项目。从一个容器部署的所有应用实例。

1 个答案:

答案 0 :(得分:1)

spring.cloud.stream:
    kafka.streams.binder.functions.filter:
       applicationId: ${zk_prop:zk}

其中 zk_prop 是环境变量,zk 是默认值。

要在使用 Gradle 插件运行应用程序时传递参数,您需要在 build.gradle 文件中配置 bootRun 任务,例如:

bootRun {
    if (project.hasProperty('args')) {
        args project.args.split(',')
    }
}

现在,您可以按如下方式传递命令行参数:

./gradlew bootRun -Pargs=--zk_prop=custom-zk,--other_props=...