yaml/properties书写注意事项
-
命名方式
application.properties/yml
application-{profile}.properties/yml -
配置文件的作用: 修改SpringBoot的默认配置
-
YAML:
采用的递归的模式, 以数据中心
语法:
k: v 表示一对键值对(v前面需要空格)
如果有层级关系, 要用空格缩进, 主要是左对齐的都是一个层级
server:
port: 8080
path: /hello
普通的值(数字, 字符串, 布尔)
k: v直接书写
字符串不用加引号
如果加上""双引号,那么就不会转义特殊字符, 特殊字符还是作为本身的想表达的意思
name: “ni /n hao” => ni 换行 hao
单引号会转义特殊字符, 最终形成一串普通的字符串
name: ‘ni /n hao’ => ni /n hao
对象, Map:
k: v格式
user:
name: zhangsan
age: 18
用缩进来表示层级关系
行内写法
user: {name: zhangsna, age: 18}
数组(List, Set)
-来表示一个元素
user:
-name
-age
配置文件与实体类的映射 @ConfigurationProperties @Value
导入提示依赖
<!--导入配置文件处理器 p配置文件进行绑定时会出现提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
@ConfigurationProperties:标注在类上,表明这个实体类与配置文件绑定,可以多数据获取; 比较多的用于SpringBoot的底层源码中获取配置属性
@Value:标注在方法上,对数据进行一对一的获取
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个对应 |
松散绑定 | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型注入 | 支持 | 不支持 |
配置文件数据分离
如果我们是数据量很大, 那么我们就需要把我们的数据application.properties配置文件中分离到其他properties中
但是我们默认扫描的还是application.properties文件,我们需要使用注解来表明文件资源路径
@PropertySource: 来指明需要加载的配置类
@PropertySource(value = {"classpath:data.properties"})
配置文件的占位符
在配置文件中,可以使用${}来获取到配置文件中的其他值
person.lastName = lisi +${person.age:3333}
person.age=${random.int}
${}中可以填写表达式或其他属性名来获取值
占位符在获取内容时, 如果没有获取到内容可以设置默认值
默认值设置方法 ${表达式:默认值}