SpringBoot使用一个全局的配置文件,配置文件名是固定的;有以下两种配置:
•application.properties
•application.yml (YAML)
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
以前的配置文件;大多都使用的是 xxxx.xml文件;YAML:以数据为中心,比json、xml等更适合做配置文件;
YAML:配置例子
server: port: 8081properties:配置例子
server.port=8081XML:配置例子
<server> <port>8081</port> </server>
k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
①字面量:普通的值(数字、字符串、布尔)
k: v:字面直接来写;字符串默认不用加上单引号或者双引号;
" ":双引号,不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: "zhangsan \n lisi":输出;zhangsan 换行 lisi
' ':单引号,转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
②对象、Map (键值对)
k: v:在下一行来写对象的属性和值的关系;注意缩进,对象还是k: v的方式
friends: lastName: zhangsan age: 20另外的一种行内写法
friends: {lastName: zhangsan,age: 18}③数组
用- 值表示数组中的一个元素
animals: - cat - dog - pig另一种行内写法
animals: [cat,dog,pig]public class Dog { private String name; private Integer age; }
YAML配置文件
person: lastName: 王晓东 age: 28 boss: false birth: 1989/10/24 lists: - lisi - 陈老六 maps: {k1: v1,k2: 东东,k3: 68} dog: name: 奥斯卡 age: 2properties配置文件
person.lastName=张三 person.age=18 person.boos=true person.birth=1989/10/24 person.lists=a,b,c ######person.maps={k1:v1,k2:三三,k3:18} 这是错误的注入方法 person.maps.k1=v1 person.maps.k2=三三 person.maps.k3=18 person.dog.name=奥斯卡 person.dog.age=2我们可以导入配置文件处理器,以后编写配置就有提示了
<!--导入配置文件处理器,配置文件进行绑定就会有提示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>我们执行test测试类
/** * SpringBoot单元测试 * 可以在测试期间很方便的类似编码一样进行自动注入到容器的功能 */ @RunWith(SpringRunner.class) //用Spring的单元测试驱动器来跑 而不是用Junit @SpringBootTest public class SpringBootQuickApplicationTests { @Autowired Person person; @Test public void contextLoads() { System.out.println(person); } }
properties配置文件占位符
①随机数
${random.value}、${random.int}、${random.long} ${random.int(10)}、${random.int[1024,65536]}②占位符也可以获取之前的配置,如果没有可以使用 :指定默认值
person.lastName=wangxiaodong@163.com person.age=${random.int} person.boos=true person.birth=1989/10/24 person.lists=a,b,c person.maps.k1=v1 person.maps.k2=${random.uuid} person.maps.k3=${random.value} person.dog.name=${dog.name:奥斯卡}_拼接字符串 person.dog.age=2 dog.name=大黑 #${dog.name:奥斯卡} :冒号指定默认值为奥斯卡