在 Spring Boot 应用中获取配置文件中的参数

为提高程序的可配置性,通常我们需要将一些可能随环境变化的变量放入到配置文件中。

Spring Boot 应用通常将配置项放入到 application.yaml 或 application.properties 文件中。本文演示读取存储在 application.yaml 文件中的参数。

假设 application.yaml 文件的内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server:
port: 7070

logging:
level:
root: ERROR
cn:
com:
hohistar: DEBUG

my-app:
backend:
host: "xxx.us-west-1.compute"
port: 8233

其中,”my-app” 部分是我们应用自定义的参数。

直接使用@Value注解读取

在需要使用到相关参数的类中,直接使用 @Value 注解进行读写,代码如下:

1
2
3
4
5
6
7
8
9
10
public class AuthApi {

@Value("${my-app.backend.host}")
private String backendHost;

@Value("${my-app.backend.port}")
private Integer backendPort;

...
}

添加配置参数类

如果在 yaml 配置的参数需要在应用的不同类中使用,每个类都加上以上的代码就非常麻烦,而且因为重复代码,还会降低应用的可维护性。所以这种情况我们通常定义一个类来专门读取参数。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
@Configuration
@ConfigurationProperties()
@Data
public class MyAppConfig {

@Value("${my-app.backend.host}")
private String backendHost;

@Value("${my-app.backend.port}")
private Integer backendPort;

}

这里,我们使用了 Lombok 中的 @Data 注解来简化 get/set 方法,使用 @Configuration 来告诉 Spring 该类是一个配置类。

然后,我们就可以在要应用这些参数的类中引用该配置类,如:

1
2
3
4
5
6
7
public class AuthApi {

@Autowired
private MyAppConfig config;

...
}

本文标题:在 Spring Boot 应用中获取配置文件中的参数

文章作者:Morning Star

发布时间:2020年09月07日 - 22:09

最后更新:2021年04月16日 - 15:04

原始链接:https://www.mls-tech.info/java/springboot-access-yaml-value/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。