1、概览 {#1概览}
本文介绍了如何在 Spring Boot 的 application.properties
和 application.yml
中使用环境变量,以及如何在代码中使用这些属性。
2、在 application.properties 文件中使用环境变量 {#2在-applicationproperties-文件中使用环境变量}
定义一个名为 JAVA_HOME
的全局环境变量,其值为 C:\Program Files\Java\jdk-11.0.14
。
要在 Spring Boot 的 application.properties
中使用该变量,需要用大括号将其包裹起来:
java.home=${JAVA_HOME}
也可以以同样的方式使用系统属性(System Properties)。例如,在 Windows 系统中,默认情况下会定义操作系统属性:
environment.name=${OS}
还可以组合多个变量值。定义另一个环境变量 HELLO_BAELDUNG
,其值为 Hello Baeldung
。现在可以将两个变量连接起来:
baeldung.presentation=${HELLO_BAELDUNG}. Java is installed in the folder: ${JAVA_HOME}
baeldung.presentation
属性值现在为:Hello Baeldung. Java is installed in the folder: C:\Program Files\Java\jdk-11.0.14
.
3、在代码中使用特定环境属性 {#3在代码中使用特定环境属性}
启动 Spring Context 后,就可以在代码中注入属性值。
3.1、使用 @Value
注入属性值 {#31使用-value-注入属性值}
可以使用 @Value
注解在 setter 方法、构造器和字段上进行注入:
@Value("${baeldung.presentation}")
private String baeldungPresentation;
3.2、从 Spring Environment
获取值 {#32从-spring-environment-获取值}
还可以通过 Spring 的 Environment
获取属性值。
注入 Environment
。
@Autowired
private Environment environment;
通过 getProperty()
方法来检索属性。
environment.getProperty("baeldung.presentation")
3.3、使用 @ConfigurationProperties
对属性进行分组 {#33使用-configurationproperties-对属性进行分组}
@ConfigurationProperties
注解可用于属性分组。定义一个组件,用于配置有指定前缀的属性,在本例中是 baeldung
。然后,可以为每个属性定义一个 setter。setter 的名称就是属性名称的其余部分。在本例中,只有一个叫做 presentation
的属性:
@Component
@ConfigurationProperties(prefix = "baeldung")
public class BaeldungProperties {
private String presentation;
public String getPresentation() {
return presentation;
}
public void setPresentation(String presentation) {
this.presentation = presentation;
}
}
现在可以在需要的地方注入 BaeldungProperties
对象:
@Autowired
private BaeldungProperties baeldungProperties;
然后,使用相应的 getter 来获取属性值:
baeldungProperties.getPresentation()
4、在 application.yml
文件中使用环境变量 {#4在-applicationyml-文件中使用环境变量}
与 application.properties
一样,application.yml
也是一个配置文件,用于定义应用的各种属性和设置。要使用环境变量,需要在属性占位符中声明其名称。
如下:
spring:
datasource:
url: ${DATABASE_URL}
如上,${DATABASE_URL}
表达式会查找名称为 DATABASE_URL
的环境变量。
要在 application.yml
中定义环境变量,必须以美元符号开头,然后是开头大括号、环境变量名称和结尾大括号。所有这些组合构成了属性占位符和环境变量名称。
此外,也可以在代码中使用特定环境属性,和 application.properties
一样。
参考:https://1111www.baeldung.com/spring-boot-properties-env-variables