2017-06-02 205 views
1

是否有一种方法在春季启动YAML文件做相同的HOCON文件中,你可以有一个默认值,并能够用这样的环境变量覆盖它:spring引导YAML默认和环境变量覆盖像HOCON文件

basedir = "/whatever/whatever" 
basedir = ${?FORCED_BASEDIR} 

在这种情况下HOCON如果你不定义一个名为FORCED_BASEDIR一个环境变量,然后BASEDIR将是“/不管/不管”,但如果你这样做,然后BASEDIR的值将被无论是在定义环境变量。

感谢

因此,基于webdizz回答下面我抬头一点点,我发现书“春季启动在行动”相当不错的描述。这里是层次结构:

实际上,有几种方法可以为Spring Boot应用程序设置属性。春天 开机时会从几个财产来源绘制属性,包括以下内容:

  1. 命令行参数
  2. JNDI从Java属性:comp/env的
  3. JVM系统属性
  4. 操作系统环境变量
  5. 随机生成的以前缀为随机数的属性值(在设置其他属性(如$ {random.long})时引用为 )
  6. 的application.properties或授权给托马斯斯尼德58第3章自定义配置应用 以外application.yml文件
  7. 的application.properties或 应用程序的内部打包application.yml文件中指定
  8. 属性源通过@PropertySource
  9. 默认属性

回答

1

春季启动提供了手段在许多层面来定义变量和支持你的情况,你只需要在下面的方式来定义变量:

application.yml

basedir: "/whatever/whatever" 

和环境:

export BASEDIR = "/another/whatever" 

然后在运行应用程序将使用值从环境。

有关更多详细信息,请查看enter link description here

+0

其实什么,我试图做的是通过命令行来覆盖此项:春季: 云: 流: 公司: 常见: brokerUrl:本地主机:9092所以从您的链接,这是这样运作的: --spring.cloud.stream.firm.common.brokerUrl = 192.168.10.1:9092作为命令行选项参数提供,但它不提供。你知道什么是正确的语法? – Fabio

+0

你能分享你用来启动你的应用程序的全部命令吗? – webdizz