2017-06-02 202 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