Dan*_*lan 9 java spring spring-boot
我有一个application.properties看起来像这样的文件:
mcl.sso.frontend-url=http://blah.com:9001
mcl.sso.mocking-agent=false
Run Code Online (Sandbox Code Playgroud)
我试图从命令行覆盖这两个变量.这应该可以通过设置环境变量来实现.这是我运行命令的方式:
MCL_SSO_FRONTEND_URL='foobar' MCL_SSO_MOCKING_AGENT='true' ./gradlew run
Run Code Online (Sandbox Code Playgroud)
但是,当我打印出这些变量的值时,mcl.sso.mocking-agent等于"true"(如预期的那样),但mcl.sso.frontend-url仍然等于" http://blah.com:9001 "(意外).为什么不mcl.sso.frontend-url改变财产的价值?我只能假设这与Spring将环境变量转换为属性键的方式有关,但我找不到任何特定的文档.
小智 51
\n大多数操作系统对可用于环境变量的名称施加严格的规则。例如,Linux shell 变量只能包含字母 ( atoz或Ato Z)、数字 ( 0to 9) 或下划线字符 ( _)。按照惯例,Unix shell 变量的名称也采用大写形式。
Spring Boot\xe2\x80\x99 的宽松绑定规则被设计为尽可能兼容这些命名限制。
\n要将规范形式的属性名称转换为环境变量名称,您可以遵循以下规则:
\n.) 替换为下划线 ( _)。-)。例如,配置属性spring.main.log-startup-info将是名为 的环境变量SPRING_MAIN_LOGSTARTUPINFO。
绑定到对象列表时也可以使用环境变量。要绑定到 a List,变量名称中的元素编号应用下划线括起来。
例如,配置属性my.service[0].other将使用名为 的环境变量MY_SERVICE_0_OTHER。
从 Spring Boot 开始,此问题已得到修复1.2.5。以前,您必须使用MCL_SSO_FRONTEND-URL(注意不能转换为下划线的破折号)。
您可以使用此示例项目来使用绑定。
| 归档时间: |
|
| 查看次数: |
6971 次 |
| 最近记录: |