当前位置: 首页 > 知识库问答 >
问题:

从 ENV 变量检索时,Spring启动应用程序属性变量转换/匹配?

相化
2023-03-14

在我的申请中。在yaml属性文件中,我定义了一个变量,如下所示-

service-account:
#   secret:  //commented in the yaml file, to indicate that it's used in app but read from ENV variable.

从这篇SOF文章中,我了解了。(点)和-(破折号)是如何转换的。
现在在ENV变量文件中-我没有像-

service-account.secret服务-account_secretservice_account_secret

相反,我在env(文件)是-SERVICEACCOUNT_SECRET=xyz

spring boot是否将props文件中的变量< code > service-account . SECRET 与< code > service account _ SECRET env变量相匹配。

有人可以确认吗?

共有1个答案

郗唯
2023-03-14

spring boot是否将props文件中的变量< code > service-account . SECRET 与< code > service account _ SECRET env变量相匹配。

是的。属性的规范形式都是小写的,带有-.分隔符。service-account.secret是规范形式。要从规范形式转换为环境变量,Spring Boot执行以下操作:

  • 将点(.)替换为下划线(_)
  • 删除任何破折号(-)
  • 转换为大写

按照以下步骤操作,服务帐户.secret 将变为SERVICEACCOUNT_SECRET因此可以使用SERVICEACCOUNT_SECRET环境变量来设置服务帐户.secret 属性。

 类似资料:
  • 我正在使用Spring MVC。我有一个用注释的类,它有很多静态变量。我想用application.properties文件中的值实例化它们。 例如在application.properties我有: 那么在类中有: 我获取bean的< code >实例化失败;嵌套异常是Java . lang . exceptioniniinitializererror 我也尝试过 然后: 它给出了同样的错误。

  • 我有一个使用restful api的Spring Boot客户机。应用程序中有任何密钥条目,而不是在java类中硬编码RESTAPI的IP地址。我可以使用的属性? 如果没有,我可以创建一个自定义条目吗? 谢啦

  • 变量可以很简单地定义成可变(var)和不可变(val)的变量。这个与Java中使用的final很相似。但是不可变在Kotlin(和其它很多现代语言)中是一个很重要的概念。 一个不可变对象意味着它在实例化之后就不能再去改变它的状态了。如果你需要一个这个对象修改之后的版本,那就会再创建一个新的对象。这个让编程更加具有健壮性和预估性。在Java中,大部分的对象是可变的,那就意味着任何可以访问它这个对象的

  • 我有一个网站。在过滤器的context param和init param中包含变量的xml文件。我想用应用程序启动时从属性文件中获取的值替换这个变量。 我的网络。xml是这样的: 和网络。属性 以下是部署的工作原理: 1) 部署工具读取给定的属性文件,用PROD或Dev值(在该工具中设置的值)替换变量,并将该文件推送到JBoss下的应用程序模块; 2) 在JBoss上启动应用程序的部署。我想要那个

  • 我正在从事一个Micronaut项目,我想看看环境变量是否来自应用程序。当应用程序在本地启动时,使用@Value注释正确分配yml。但每次应用程序启动时,它都会向我显示变量没有从应用程序分配给环境变量。yml文件。 这是我的代码: 这是我的application.yml 输出: 正如我们看到的,两个变量应用YmlTestString和keyId没有被分配给环境变量。有没有办法解决这个问题,并获得:

  • 属性与Java中的字段是相同的,但是更加强大。属性做的事情是字段加上getter加上setter。我们通过一个例子来比较他们的不同之处。这是Java中字段安全访问和修改所需要的代码: public class Person { private String name; public String getName() { return name; }