在 SpringBoot 中读取环境变量

新手上路,请多包涵

SpringBoot 中读取 环境变量 的最佳方法是什么?

在Java中,我使用:

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

是否可以使用 @Value 注释来做到这一点?

原文由 Michał Szewczyk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

引用 文档

Spring Boot 允许您将配置外部化,以便您可以在不同的环境中使用相同的应用程序代码。您可以使用属性文件、YAML 文件、 环境变量 和命令行参数来外部化配置。属性值可以 使用 @Value 注释 直接注入到您的 bean 中,通过 Spring 的 Environment 抽象访问或通过 @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
    }
}

原文由 g00glen00b 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用 @Value 注释来做到这一点:

 @Value("${bar}")
private String myVariable;

如果找不到,您还可以使用冒号给出默认值:

 @Value("${bar:default_value}")
private String myVariable;

原文由 Rlarroque 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题