问:在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