Spring Boot使用一个全局的配置文件
- application.properties
- application.yml
配置文件放在src/main/java/resources目录或者类路径/config下,如果都有先读取properties中值没有在度yml中值,主要用yml写法。
yml语法
1.基本语法
k:(空格)v:(空格)表示一个键值对(空格必须有)
以空格的缩进来控制级层关系,只要左对齐的一系列数据,yml都会看成同一级别的
server: address: 8080
属性和值也是大小写敏感;
2.值的语法
字面量:普通的值(数字,字符串,布尔)
k:(空格)v 字面量的值
字符串默认不加单引号或双引号
双引号,不会转移字符串里的特殊字符;特殊字符会作为本身想表达的意思
name:(空格)“zhangsan \n lisi” 输出: zhangsan 换行 lisi
单引号 会转移字符串里的特殊字符;特殊字符不会作为本身想表达的意思
name:(空格)‘zhangsan \n lisi’ 输出: hangsan \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]
先要加入依赖(重启生效):
<!--导入配置文件处理器,配置文件进行绑定才会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
application.yml文件写法(person小写)
person: lastName: zhangsan age: 18 boss: true birth: 1998/12/12 maps: k1: v1 k2: v2 lists: - lisi - zhangwu dog: name: 小虎 age: 2
Person代码:
@Component @ConfigurationProperties(prefix = "person") public class Person { private String lastName; private Integer age; private boolean boss; private Date brith; private Map <String ,Object> maps; private List<Object> lists; private Dog dog;
//setter和getter方法
Dog代码:
public class Dog { private String name; private Integer age;
//setter和getter方法
Tets方法:
@RunWith(SpringRunner.class) @SpringBootTest public class HellowordquickApplicationTests { @Autowired Person person; @Test public void contextLoads() { System.out.println(person); } }
运行结果为:(如果值位null,prefix = “person”重新写)
Person{lastName='zhangsan', age=18, boss=true, brith=null, maps={k1=v1, k2=v2}, lists=[lisi, zhangwu], dog=Dog{name='小虎', age=2}}