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

SpringBoot:在application.yaml中动态设置属性,spring,properties,Spring,Properties,application.yaml包含(例如)设置: spring.cloud.stream: kafka.streams.binder.functions.filter: applicationId: zk 我希望“applicationId”被设置为DINAMICALL。 为此,我尝试使用SpEl。但事实证明,SpEl不适用于application.yaml 我阅读了yaml的两种日常设置方式: 使用pom.xml 使用环境变量 但这种方式不适用于我的情况:这是一个g

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

 spring.cloud.stream:
    kafka.streams.binder.functions.filter:
       applicationId: zk
我希望“applicationId”被设置为DINAMICALL。 为此,我尝试使用SpEl。但事实证明,SpEl不适用于application.yaml

我阅读了yaml的两种日常设置方式:

  • 使用pom.xml
  • 使用环境变量
  • 但这种方式不适用于我的情况:这是一个gradle项目。从一个容器部署的所有应用程序实例

    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=…

    我试试看。非常感谢。