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

读取SpringBoot中的环境变量

岳池暝
2023-03-14

在SpringBoot中读取环境变量的最佳方法是什么?
在Java中,我使用了以下方法:

String foo = System.getenv("bar");

是否可以使用@value注释来实现?

共有1个答案

解修然
2023-03-14

引用文档:

Spring Boot允许您将配置外部化,从而可以在不同的环境中使用相同的应用程序代码。您可以使用属性文件、YAML文件、环境变量和命令行参数来外部化配置。属性值可以使用@value注释直接注入到bean中,可以通过Spring的环境抽象访问,也可以通过@configurationproperties绑定到结构化对象。

因此,由于Spring boot允许您使用环境变量进行配置,并且由于Spring boot还允许您使用@value从配置中读取属性,所以答案是肯定的。

@Component
public class TestRunner implements CommandLineRunner {
    @Value("${bar}")
    private String bar;
    private final Logger logger = LoggerFactory.getLogger(getClass());
    @Override
    public void run(String... strings) throws Exception {
        logger.info("Foo from @Value: {}", bar);
        logger.info("Foo from System.getenv(): {}", System.getenv("bar")); // Same output as line above
    }
}
 类似资料:
  • 问题内容: 有没有办法在Node.js代码中读取环境变量? 例如Python的。 问题答案: process.env.ENV_VARIABLE 您要访问的变量的名称在哪里。

  • 5.3.1 $%envVarName% 当编译时,$%envVarName% 将会被环境变量 envVarName 替换。

  • 在Jenkins中,我试图设置一个动态环境变量。 我使用Scriptler创建了一个Groovy脚本并将结果写入文件。 然后,我使用EnvInject来读取该文件的内容。 Groovy脚本: 设置: 但是,我想要设置的环境变量仍然无法识别: 知道为什么无法识别环境变量吗?

  • 我正在尝试使用在我的Quarkus应用程序中读取环境变量,但没有成功。我认为仅指定变量名应该就足够了,但它不起作用: 我还尝试在应用程序中指定一个属性。属性 读起来就像 但变量始终为空。 我错过什么了吗?在Quarkus中读取环境变量的正确方法是什么 我正在使用Quarkus 1.2.0。最终的

  • 问题内容: 我正在尝试从批处理文件中读取变量,以供以后在批处理脚本(这是Java启动器)中使用。理想情况下,我希望所有平台(Unix,Windows)上的设置文件具有相同的格式,并且也是一个有效的Java属性文件。也就是说,它应如下所示: 是否可以像在Unix shell脚本中一样读取这些值?罐子应该看起来像这样: 我知道可以使用来实现,但是我真的希望所有平台上的设置都使用相同的文件格式。 需要说

  • 问题内容: 我在EC2竞价型实例上运行R,并且需要R终止实例并在脚本运行后取消竞价请求。 为此,我在环境变量中设置了“请求ID” ,我的计划是在脚本准备好后将以下代码简单地调用到R中 我遇到的问题是R无法“看到”我从外部R 键入时看到的相同环境变量,因此该命令无法正常工作。 我已经检查了一下,如果我将环境变量设置为R,就可以看到这些变量,但这是另一个问题。由于这些变量是动态的(每次创建竞价型实例时