Seb*_*ski 8 spring spring-boot
我正在尝试对我的application.yml文件进行参数化,以便我可以将它放在我的项目的github repo上,但不会显示数据库连接细节.我想使用系统环境变量来做到这一点.我使用OS X El Capitan.
我在下面写了以下几行.bash_profile:
export JDBC_TODO_USER=<my-username>
export JDBC_TODO_PASS=<my-password>
Run Code Online (Sandbox Code Playgroud)
我的后续行application.yml:
spring:
datasource:
username: ${JDBC_TODO_USER}
password: ${JDBC_TODO_PASS}
Run Code Online (Sandbox Code Playgroud)
我也试过了
spring:
datasource:
username: ${JDBC.TODO.USER}
password: ${JDBC.TODO.PASS}
Run Code Online (Sandbox Code Playgroud)
这两个都在应用程序启动时给我一个错误:
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不明白我是指环境变量.我是否需要进行一些额外配置才能使其正常工作?
您的环境变量很可能不可用。您是否尝试过以下操作以查看它们是否可以访问?
echo $JDBC_TODO_USER
echo $JDBC_TODO_PASS
Run Code Online (Sandbox Code Playgroud)
或者
export
Run Code Online (Sandbox Code Playgroud)
确保它们可用的可靠方法是:
Run Code Online (Sandbox Code Playgroud)setenv JDBC_TODO_USER setenv JDBC_TODO_PASS
您还可以尝试系统属性:
java -Djdbc.todo.user=myuser -Djdbc.todo.pass=mypass -jar MyProject.jar
在您的 application.yml 中包含以下内容:
spring:
datasource:
username: ${jdbc.todo.user}
password: ${jdbc.todo.pass}
Run Code Online (Sandbox Code Playgroud)
但最终为了在生产环境中存储用户凭据,我会推荐以下之一:http : //docs.ansible.com/ansible/playbooks_vault.html https://vaultproject.io/
我找到了罪魁祸首 - 我通过 Eclipse 完成了所有操作,但 Eclipse 看不到.bash_profile文件内的内容。在“运行”->“运行配置...”->“环境”中设置这些环境变量修复了该问题。
| 归档时间: |
|
| 查看次数: |
9827 次 |
| 最近记录: |