Spring Boot配置文件
Spring Boot使用一个全局的配置文件,主要有一下两种:
- application.properties
- application.yml
配置文件放在src/main/resources目录或者类路径config下
yml是YAML(YAML Ain’t Markup Language)语言的文件,以数据为中心,比json、xml等更适合做配置文件
- http://www.yaml.org/ 参考语法规范
全局配置文件可以对一些默认配置值进行修改
1、 新建application.yml配置文件
右键新建file:
2、小案例:修改默认端口号8080为8081
server:
port: 8081
yml语法
1、基本语法
key:(空格)v:(空格)
- 表示一个键值对,空格必须要用
- 以空格的缩进来控制级别关系,主要左对齐的一系列数据,yml都会看成同级别
- 大小写敏感
2、值的语法
字面量:普通的值(数字,字符串,布尔值)
- k:(空格)v:(字面量值)
- 字符串:默认不用加单引号或双引号;
- “ ”:双引号,不会转义字符串里面的特殊字符;特殊字符会作为本身想表达的意思
例如:name: “zhangsan \n lisi” 输出:zhangsan 换行 lisi - ‘ ’:单引号,会转义其中的特殊字符的含义
例如:‘zhangsan \n lisi’ 输出:zhangsan \n lisi
- “ ”:双引号,不会转义字符串里面的特殊字符;特殊字符会作为本身想表达的意思
- 对象、map(值与属性)(键值对):
-
k: v:在下一行来写对象的属性和值的关系(注意缩进)
对象还是以k:v的方式
例如:friends: lastName:zhangsan age:20
-
行内写法:
friends:{lastName:zhangsan,age:20}
-
- 数组(list,set)
-
用- 值来表示数组中的一个元素
pests: - cat - dog - pig
-
行内写法:
pests:[cat,dog,pig]
-
3、获取yml配置文件的属性值
新建java bean Person和Dog
注意:需要自动注入到Spring容器中的类,要跟SpringBoot主配置类是同包下,或是主配置类所处包的子包下
/**
* 将配置文件的每一个属性的值都映射到这个组件中
* @ConfigurationProperties:告诉Spring Boot将本类中的属性和配置文件中的配置进行绑定
* prefix="Person" :配置中的哪一个下面的所有属性进行映射
* 只有这个组件是容器中的组件时才能提供,才能给容器提供ConfigurationProperties功能
*/
@Component
@ConfigurationProperties(prefix="person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setAge(Integer age) {
this.age = age;
}
public void setBoss(Boolean boss) {
this.boss = boss;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public void setMaps(Map<String, Object> maps) {
this.maps = maps;
}
public void setLists(List<Object> lists) {
this.lists = lists;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public String getLastName() {
return lastName;
}
public Integer getAge() {
return age;
}
public Boolean getBoss() {
return boss;
}
public Date getBirth() {
return birth;
}
public Map<String, Object> getMaps() {
return maps;
}
public List<Object> getLists() {
return lists;
}
public Dog getDog() {
return dog;
}
@Override
public String toString() {
return "Person{" +
"lastName='" + lastName + '\'' +
", age=" + age +
", boss=" + boss +
", birth=" + birth +
", maps=" + maps +
", lists=" + lists +
", dog=" + dog +
'}';
}
}
public class Dog {
private String name;
private Integer age;
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
}
给pom.xml添加依赖:
<!--导入配置文件处理器,配置文件绑定才有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
编写Spring Boot单元测试:
/**
* Spring Boot单元测试
* 可以在测试期间很简单的把容器中的主键注入进来
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@Autowired
private Person person;
@Test
public void contextLoads() {
System.out.println(person);
}
}
重启applicaiton,运行测试类: