配置文件读取
Spring Boot读取配置文件常用方式
@Value方式获取
1 2 3 4 5 6 7
| @Value(${配置项key:默认值}) private String configValue;
@Value("${value.request.timeout:20}") private int timeOut;
|
Environment对象获取
1 2 3 4 5 6 7
| @Autowired private Environment environment;
environment.getProperty("value.request.timeout")
|
@ConfigurationProperties方式获取
在application.yml中:
1 2 3 4 5
| settings: name: ove curl: ConnectionTimeOut: 30 OperationTimeOut: 60
|
则对应的配置类为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;
@Data @Component @ConfigurationProperties(value = "settings") public class SettingProperties {
private String name;
private Curl curl;
@Data public static class Curl { private int ConnectionTimeOut; private int OperationTimeOut; } }
|
注意事项
- @ConfigurationProperties(value = “settings”) 表示配置文件里属性的前缀是 settings
- 配置类上记得加上 @Data 和 @Component 注解(或者在启动类上加上 @EnableConfigurationProperties(value = AppProperties.class) )
- 如果有内部类对象,记得加上 @Data ,不然无法映射数据
使用方法:
1 2
| @Autowired private SettingProperties settingProperties;
|
@PropertySource方式获取
有时候我们会有一些特殊意义的配置,会 单独 用一个配置文件存储,比如数据库配置连接参数(在application.yml同级目录新建一个配置文件)
则对应的配置类为:
1 2 3 4 5 6 7 8 9 10
| @Data @Component @ConfigurationProperties(value = "others") @PropertySource(value = "classpath:others.properties", encoding = "UTF-8", ignoreResourceNotFound = true) public class OtherSettingProperties {
private String userName;
private String userAge; }
|
注意事项
- @ConfigurationProperties(value = “others”) 表示配置文件里属性的前缀是 others
- @PropertySource 中 value 属性表示指定配置文件的路径,encoding 属性表示指定的是读取配置文件时的编码,记得和文件 alian.properties 的编码保持一致,ignoreResourceNotFound 属性值为true时没找到指定配置文件的时候不报错
- 配置类上记得加上 @Component 注解
- .yml 格式不支持 @PlaceSource 注解导入配置
使用方法:
1 2
| @Autowired private OtherSettingProperties otherSettingProperties;
|