我们在 SpringBoot配置文件中知道yml格式的配置文件可以支持更多的数据类型,在这里详细介绍:
配置与读取不同数据类型的数据
配置
String.hello: 你好
int.num: 10
null.value: ~
boolean.value: true
float.value: 3.14
注:在yml里使用 类型 . 变量:值 的形式来配置变量的值
读取
@Value("${String.hello}")
private String string;
@Value("${int.num}")
private int num;
@Value("${null.value}")
private String value1;
@Value("${boolean.value}")
private boolean value2;
@Value("${float.value}")
private float value3;
@PostConstruct
public void postConstruct(){
System.out.println(string+" " + num + " " + value1 + " " + value2 + " " + value3);
}
注:使用@Value注解,以 ${} 的形式读取配置的变量
配置与读取字符串类型的数据
配置
String:
str1: hello \n spring boot
str2: 'hello \n spring boot'
str3: "hello \n spring boot"
注:配置同一类型的多个变量采用分层配置
读取
@Value("${String.str1}")
private String str1;
@Value("${String.str2}")
private String str2;
@Value("${String.str3}")
private String str3;
@PostConstruct
public void print(){
System.out.println("str1" + str1);
System.out.println("str2" + str2);
System.out.println("str3" + str3);
}
注:
- 使用@Value注解,以 ${} 的形式读取配置的变量
- 从上述结果可以看出:字符串默认不用加上单引号或者双引号
- 单引号不会转义特殊字符,特殊字符最终只是一个普通的字符串数据
- 双引号会转义特殊字符,特殊字符会表达其本身的意思
配置与读取对象
配置
student:
id: 1
name: 张三
age: 18
注:在配置的时候不允许使用驼峰命名法,要全小写
读取
@ConfigurationProperties(prefix = "student")
@Component
public class Student {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
@Autowired
private Student student;
@PostConstruct
public void printStudent(){
System.out.println(student);
}
注:
- 要在对象的实体类上加 @ConfigurationProperties 注解并指定配置对象时的对象名,这样就会把配置文件中配置的对象映射到实体类上,可以进行后续的使用
- 使用依赖注入的方式注入对象,即可得到配置后的对象
配置与读取集合
配置
dbtypes:
name:
- mysql
- sqlserver
- redis
注:要在要输入集合的内容前加 -
读取
@Component
@ConfigurationProperties(prefix = "dbtypes")
public class ReadList {
public List<String> name;
}
@Autowired
private ReadList list;
注:
- 要在对象的实体类上加 @ConfigurationProperties 注解并指定配置对象时的对象名,这样就会把配置文件中配置的对象映射到实体类上,可以进行后续的使用
- 使用依赖注入的方式注入对象,即可得到配置后的对象