一、两种配置文件
SpringBoot默认有两种全局配置文件:application.properties和application.yml,配置文件名是固定的
配置文件的作用:修改SpringBoot自动配置的默认值,SpringBoot应用之所以能够直接访问,是因为SpringBoot在底层有很多默认配置,我们可以通过全局配置文件来更改这些默认配置
YAML:以数据为中心,比JSON、XML更适合做配置文件,后缀名可以是.yml或.yaml,示例:
server:
port: 8082
二、YAML的语法
1、基本语法
①k:(空格)v——k是键,v是值,注意冒号后面有个空格
②以空格的缩进控制层级关系——左对齐的一列数据的层级是一样的
server:
port: 8081
error:
path: /
address: /hello
③属性和值都是大小写敏感的
2、值的写法
①字面量:数字、字符串、布尔
k: v(字符串默认不用加单引号或双引号,但是加单引号和加双引号会有一点不同——双引号里面的特殊字符会被转义,单引号则不会)
name: '张三 \n 李四' #"张三 \n 李四"
name: "张三 \n 李四" #"张三 换行 李四"
age: 20
②对象(或Map):注意空格控制层级和所属关系
friend:
name: 张三
age: 20
或者
friend: {name: 张三,age: 20}
③数组(或list、set):用短横线- 值表示第n个元素
pets:
- cat
- dog
- pig
或者
pets: [cat,dog,pig]
3、配置文件值注入
嵌套写法:
person:
name: 张三
age: 20
married: false
birth: 2017/12/02
phones: {home: 05308790673,componay: 1558909876} #map
friends: #list
- 李四
- 王五
dog: #obj
name: 旺财
age: 2
JavaBean:
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Boolean married;
private Date birth;
private Map<String,String> phones;
private List<String> friends;
private Dog dog;
//...getter setter
}
注意:
a、能够注入值的bean必须是Spring管理的bean,即只能给加了@Component等注解的bean注入值
b、欲通过配置文件给bean注入值必须给该bean加@ConfigurationProperties注解,告诉SpringBoot该bean的所有属性的值均可以从配置文件中注入,该注解的属性prefix是指定用配置文件中的哪个键为该bean注入属性值
另外,可以导入一个配置文件处理器,这样我们在配置文件中写属性时就会有提示了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
在导入了配置文件处理器后属性名的驼峰式写法中的大写字母在提示的时候会变成-小写字母:等效于驼峰时写法
last-name
此处的last-name也可以写为lastName
4、SpringBoot为我们提供的单元测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootHelloquickApplicationTests {
@Autowired
private Person person;
@Test
public void contextLoads() {
System.out.print(person);
}
}
使用的SpringRunner的方式而非Junit,这样就可以在测试类中注入值了