我試圖參數化我的application.yml
文件,所以我可以將它放在我的項目的github repo上,但不顯示數據庫連接的詳細信息。我想使用系統環境變量來做到這一點。我使用OS X El Capitan。Spring Boot - 在application.yml中使用環境變量
我把我的.bash_profile
下面幾行:
export JDBC_TODO_USER=<my-username>
export JDBC_TODO_PASS=<my-password>
及以下線路在我application.yml
:
spring:
datasource:
username: ${JDBC_TODO_USER}
password: ${JDBC_TODO_PASS}
我也試過
spring:
datasource:
username: ${JDBC.TODO.USER}
password: ${JDBC.TODO.PASS}
兩個那些給我一個錯誤在應用程序的開始: java.sql.SQLInvalidAuthorizationSpecException: Could not connect: Access denied for user '${JDBC_TODO_USER'@'<my-ip-address>' (using password: YES)
當然,當我用我的用戶名替換${JDBC_TODO_USER}
並用我的密碼${JDBC_TODO_PASS}
時,一切正常。它看起來像Spring不明白我指的是環境變量。我需要做一些額外的配置才能使它工作嗎?
正如我在我自己的答案寫,問題與Eclipse沒有看到變量在'.bash_profile'中定義。我注意到當我在終端中運行'mvn spring-boot:run'時,應用程序啓動時沒有任何問題。我不得不在Eclipse中的運行配置中設置這些變量,以使其在那裏工作。但是謝謝你指出了通過這些憑據的其他方式! –
這也適用於使用Java屬性文件。我只想指出,當依賴環境變量時,你必須明確說明它們事先存在(例如,注意Win env的)。 – reim