我正在使用Spring Boot2,通过阅读这里关于外部化属性的文档,我希望可以通过声明一个同名的os环境变量来覆盖application.properties中变量的值。
所以我做了如下的尝试。
首先,在src/main/resources/application.properties
中声明以下2个变量
my.prop = hello
myProp = hello
@SpringBootApplication
public class Main {
private static final Logger logger = LoggerFactory.getLogger(Main.class);
@Value("${my.prop}")
String myDotProp;
@Value("${myProp}")
String myProp;
@Value("${my.env.prop}")
String envDotProp;
@PostConstruct
public void test() {
logger.debug("my.prop : " + myDotProp);
logger.debug("myProp : " + myProp);
logger.debug("my.env.prop : " + envDotProp);
}
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
2018-04-21 14:41:28.677 DEBUG 22520 --- [main] me.Main : my.prop : hello
2018-04-21 14:41:28.677 DEBUG 22520 --- [main] me.Main : myProp : world
2018-04-21 14:41:28.677 DEBUG 22520 --- [main] me.Main : my.env.prop : world
>
Spring可以看到环境变量,而不管是否有have点(.)是否在变量名中,如myprop
和my.env.prop
所示
Spring只能在application.properties
中使用同名os环境变量的值重写该变量的值,前提是该变量的名称不包含点(.)如myprop
和my.prop
所示:myprop
的值已经成功地覆盖到world
,但是my.prop
的值仍然保持hello
,即使我声明了os env变量my.prop
。
这种行为有什么原因吗?有没有一种方法可以配置Spring,以便在属性变量中使用dot,并使用os env变量重写它们?
将环境变量中的.
替换为_
.
。例如,如果在Spring Boot中属性名为my.env.prop
以便重写它,请使用名为my_env_prop
的环境变量,而Spring会自动执行转换。
.
出现问题的原因是某些操作系统不支持环境变量名称中的.
。
这里讨论的类似问题:如何通过环境变量设置名称中带有下划线的Spring Boot属性?
问题内容: 当我运行以下Jenkins管道脚本时: 我收到此错误: 如果从中删除,则可以正常工作。有人可以解释导致此行为的作用域规则吗? 问题答案: TL; DR 定义的变量 与 主脚本主体不能从其他方法来访问。 定义的变量 ,而不 能够直接通过任何方法甚至从不同的脚本访问。这是一个坏习惯。 使用 和 注释定义的变量可以直接从同一脚本中定义的方法访问。 说明 当groovy编译该脚本时,它实际上将
问题内容: 我一直在阅读官方文档,但无法找到有关环境变量的任何信息。显然,有一些社区项目支持环境变量,但这对我来说可能是过大了。所以我想知道在使用Vue CLI创建的项目上是否有一些简单的开箱即用的功能可以正常工作。 例如,我可以看到,如果执行以下操作,则会打印出正确的环境,这意味着已经设置好了吗? 我对环境变量和Node有点陌生。 仅供参考,使用Vue CLI 3.0 beta版。 问题答案:
最佳实践最好在values.yaml文件中定义环境变量还是在templates/deployment.yaml放入中定义环境变量? 如果有您使用的示例应用程序,您能提供帮助吗?
问题内容: 以下是来自java.lang.System类的代码(JDK版本1.6) 当我们在代码中编写代码时,为什么即使将“ out”设置为“ null”也不会得到NullPointerException 无论如何,将通过System类中的以下方法进行设置 那么为什么JLS需要方法? 问题答案: 看看-这个方法被称为启动事情,它调用的是一个方法。这将它与应该存在的位置联系在一起。 因此,即使该字段
Git 总是在一个 bash shell 中运行,并借助一些 shell 环境变量来决定它的运行方式。 有时候,知道它们是什么以及它们如何让 Git 按照你想要的方式去运行会很有用。 这里不会列出所有的 Git 环境变量,但我们会涉及最有的那部分。 全局行为 像通常的程序一样,Git 的常规行为依赖于环境变量。 GIT_EXEC_PATH 决定 Git 到哪找它的子程序 (像 git-commit
Puppeteer 寻找某些环境变量来帮助其操作。 如果 puppeteer 在环境中没有找到它们,这些变量的小写变体将从 npm 配置 中使用。 HTTP_PROXY, HTTPS_PROXY, NO_PROXY - 定义用于下载和运行 Chromium 的 HTTP 代理设置。 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD - 请勿在安装步骤中下载绑定的 Chromium。