读取 SpringBoot 中的环境变量
2022-08-31 14:42:00
在SpringBoot中读取环境变量的最佳方法是什么?
在Java中,我使用:
String foo = System.getenv("bar");
是否可以使用注释来执行此操作?@Value
在SpringBoot中读取环境变量的最佳方法是什么?
在Java中,我使用:
String foo = System.getenv("bar");
是否可以使用注释来执行此操作?@Value
引用文档:
Spring Boot 允许您将配置外部化,以便您可以在不同的环境中使用相同的应用程序代码。您可以使用属性文件、YAML 文件、环境变量和命令行参数来外部化配置。属性值可以使用
@Value
注释直接注入到您的bean中,通过Spring的抽象访问或通过绑定到结构化对象。Environment
@ConfigurationProperties
因此,由于Spring引导允许您使用环境变量进行配置,并且由于Spring引导还允许您使用从配置中读取属性,因此答案是肯定的。@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
}
}
您可以使用@Value注释来执行此操作:
@Value("${bar}")
private String myVariable;
如果找不到,您还可以使用冒号给出默认值:
@Value("${bar:default_value}")
private String myVariable;