元木Java编程笔记 stackoverflow SpringBoot中读取环境变量

SpringBoot中读取环境变量

问:在SpringBoot中读取环境变量的最佳方法是什么? 在Java中,我使用: String foo = …

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

在Java中,我使用:
String foo = System.getenv("bar");

springboot里可以使用@Value注释来实现吗?

答:引用官网文档:

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

因此,由于Springboot允许您使用环境变量进行配置,而且由于Springboot还允许您使用@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
    }
}

stackoverflow question 44803211

 

我是元木,多年互联网软件研发老兵,在『元木Java编程笔记』上记录自己码农生涯中的一些Java编程笔记,欢迎交流。
转载请注明出处:https://www.javanote.net/1040.html

作者: 元木

发表评论