原文网址:SpringBoot--用类表示yml配置文件的值_IT利刃出鞘的博客-****博客
简介
说明
对于里边的配置,我们可以通过@Value来获得,比如:@Value("${}")。但是,如果属性很多,写很多个@Value就会很繁琐。
解决方案就是:使用@ConfigurationProperties,将一组属性通过一个类来接收。
注意
- 保存属性的类必须加getter和setter。
- prefix不能有这些:大写字母、某些特殊字符(比如:_、~、!、@、#、$、*、+、:等)
- 可以包含的字符有:-
@ConfigurationProperties与@Value的区别
项 |
@ConfigurationProperties |
@Value |
类型 |
Map、内部类、对象等。 |
不支持内部类、对象。 |
spEl表达式 |
不支持 |
支持 |
JSR303数据校验 |
支持 |
不支持 |
功能 |
一个列属性批量注入 |
单属性注入 |
宽松绑定
支持宽松绑定,见:Spring注解--@Value--使用/教程/实例_@value 默认值空字符串-****博客
使用方法
法1:@ConfigurationProperties+@Component
@Component
@ConfigurationProperties(prefix = "hello")
public class HelloProperties {
private String name;
private List<String> emails;
private Map<String, Integer> price;
// getter and setter
}
法2:@ConfigurationProperties+@Bean
此时HelloProperties不需要加任何注解。
配置类
@Configuration
public class Config {
@Bean
@ConfigurationProperties(prefix = "hello")
public HelloProperties helloProperties(){
return new HelloProperties();
}
}
实体类
public class HelloProperties {
private String name;
private List<String> emails;
private Map<String, Integer> price;
// getter and setter
}
法3:@EnableConfigurationProperties+@ConfigurationProperties
在有@Configuration注解的类上加@EnableConfigurationProperties来声明。
配置类
@Configuration
@EnableConfigurationProperties()
public class HelloConfiguration {
}
实体类
@ConfigurationProperties(prefix = "hello")
public class HelloProperties {
private String name;
private List<String> emails;
private Map<String, Integer> price;
// getter and setter
}
实例
上边是文章的部分内容,为便于维护,全文已转移到此网址:SpringBoot–用类表示yml配置文件的值 - 自学精灵