赞
踩
我们都知道SpringBoot项目有两种可以配置文件的方式:1、application.properties 2、application.yml
但是application.properties相较于applicatoin,yml编写起来更麻烦,并且可读性更差,所以一般推荐使用application.yml来进行项目的配置。
YAML是一种标记语言,其语法和Josn类似。
1、基本语法:
键值对: K:(空格) v
通过空格的缩进来控制层级关系,同一列的数据是同一层级的。
server:
port: 8080
path: /****
需要注意:属性和值是大小写敏感的
2、值的写法
字面量:普通的值(数字,字符串,布尔值)
字符串默认是不需要单引号和双引号。
下面给出单引号和双引号的区别:
单引号:会转义特殊字符。
双引号:不会转义字符里的特殊字符,特殊字符仍然是本身的意思
name: "zhangsan \n list" #zhangsan 换行 list
name: 'zhangsan \n list' #zhangsan \n list
3、对象,Map写法:
对象是K:v的方式:
friends:
lastName: zhangsan
age: 20
行内写法:
friends: {lastName:zhangsan ,age:18}
4、数组(List,Set)
用-来表示数组中的一个元素:
animals:
- cat
- dog
- pig
例如我们的application.yml 如下:
person:
lastName: zhangsan
age: 18
boss: false
birth: 2018/12/16
maps: {a1:v1; a2:12}
lists:
- lisi
- zhangsan
dog:
name: 狗
age: 2
我们可以在Bean中新建person类如下:
@ConfigurationProperties:告诉SpringBoot将本类中的属性和配置文件中相关的配置进行绑定 * prefix = "person":配置文件中哪个下面的所有属性进行一一映射 * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能; */ // @PropertySource(value={"classpath:person.properties"}) 读取指定位置的配置文件,若为无,则默认是全局配置文件applicatioin.yml, @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; public Dog dog;
注意这样导入需要在pom中导入对应的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
这里当项目运行时,person对象就可以获取到application.yml中对应的值
第二种读取application.yml中值的方式:
使用@Value来进行数据的导入:
例如:
@Component
//@ConfigurationProperties(prefix="person")
public class Person {
@Value("${person.last-name}")
private String lastName;
@Value("#{10*2}")
private Integer age;
@Value("true")
private Boolean boss;
可以通过@Value的方式从配置文件中将值注入到我们的实体类当中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。