0

当定义一个属性时,application.properties例如

deployment=dev
spring.profiles.active=${deployment}

Spring 无法deployment正确解析该属性。

Main : The following profiles are active: ${deployment}

相反,我必须在变量的每个实例中指定一个默认值,例如

deployment=dev
spring.profiles.active=${deployment:dev}

但是,当我通过各种方式之一(环境变量、系统属性等)覆盖该属性时,设置值在任何地方都被正确解析。有没有办法在application.properties文件中定义默认值?

4

2 回答 2

0
${GROUP_ID:123456}

您可以通过上述方式指定作为属性的一部分提供的默认值:

于 2020-01-29T19:39:45.740 回答
0

这是您可以执行的操作:

创建一个包含默认设置的 application.properties 文件。

然后创建一个 applicaiton-ENV.properties 文件,其中包含 ENV 的任何附加值或重载值(在您的示例中,ENV 将是 dev)

然后在运行时设置环境变量 spring.profiles.active=dev

java .... -Dspring.profiles.active=dev  YourSpring.jar

这将导致 spring boot 以您想要的配置文件运行,并将读取默认值和附加的 -dev 文件。

这允许您为无限数量的环境设置多个不同的应用程序属性。如果你没有设置 spring.profiles.active 环境变量,它将运行简单地加载默认的 application.properties 文件。

于 2020-01-29T19:31:33.657 回答