SpringBoot中使用两种配置文件,分别是application.yml和application.properties,配置文件的作用是用于修改SpringBoot自动配置的默认值.传统的项目所用的配置文件通常为XML或JSON,而SpringBoot使用的YAML以数据为中心,比XML,JSON等更适合做配置文件:
XML配置端口号:
<server>
<prot>8088</port>
</server>
YAML配置端口号:
server:
port: 8088
使用YAML配置的话,其基本语法形如MAP,为:key:(空格)value,其中的空格必须要,如
key: value
而其又以缩进分层,左对齐的均为同一层级的内容,如
person1:
name: "1111"
age: 22
sex: 男
person2:
name: '222'
age: 33
sex: '女'
其中person1和person2是同一层级,是两个不同的类,而内部的name等是其属性,而在YAML内,字符串类型默认为单引号,可不用加单双引号,而单双引号存在不同,单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据
person:
name:'111 \n 222'
如上的代码输出结果为
而双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思:
person:
name: "111 \n 222"
其输出结果为:
可以看到起发生了换行。
而在YAML中,创建一个类对象的格式有两种,分别如下:
LeiMing1:
shuxing1: 1
shuxing2: 2
shuxing3: 3
LeiMing2:{shuxing1: 1,shuxing2: 2,shuxing3: 3}
而创建数组(List、Set)也有2种写法:
List1:
-111
-222
-333
List2:[111,222,333]
而使用YAML配置类,首先创建一个实体类:
@Component
@ConfigurationProperties(prefix = "person")//告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定,并指定绑定的配置名
public class Person {
String name;
Integer age;
List<String> friends;
String address;
String school;
@Override
public String toString() {
return "person{" +
"name='" + name + '\'' +
", age=" + age +
", friends=" + friends +
", address='" + address + '\'' +
", school='" + school + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public List<String> getFriends() {
return friends;
}
public void setFriends(List<String> friends) {
this.friends = friends;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
}
创建一个application.yml,写上对应的默认值:
server:
port: 8082
person:
address: '优快云'
age: 19
friends:
-f1
-f2
-f3
name: "name1"
school: "TWTDX"
在Test中查看是否成功配置:
@RunWith(SpringRunner.class)
@SpringBootTest
class Demo12ApplicationTests {
@Autowired
Person person;
@Test
void contextLoads() {
System.out.print(person);
}
}
可以看到运行成功
而另一种application.properties作用与YAML类似,但是优先级更高。其与YAML一样字符串默认可不写引号,但是其的单双引号不会转义字符串里面的特殊字符,其写法为:对象名.属性名=属性;
在上面YAML基础上创建一个application.properties
person.address=aaa
person.name="name \n 1"
person.school='twt \n dx'
运行结果如下:可以看到name,address,school属性均被修改,且无论单双引号否,/n都起到了换行的作用。