yaml语法
SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的
-
application.properties
语法结构 :key=value
-
application.yaml
语法结构 :key:空格 value
# yaml对空格特别注重
server:
port: 8081
#对象
student:
name: hzc
age: 3
student1: {name: hzc,age: 3}
#数组
pets1:
- pig
- dog
- fish
#行内写法
pets: [pig,dog,fish]
yaml可以给实体类赋值
@Component//注册bean到容器中
@ConfigurationProperties(prefix = "person") //prefix前缀
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> list ;
private Dog dog;
person:
name: 张三
age: ${random.int(20)}
happy: true
birth: 2021/7/12
maps: {k1: v1,k2: v2}
list:
- code
- music
- basketball
dog:
name: 旺财
age: ${random.int(10)}
加载指定的配置文件
@PropertySource:加载指定的配置文件;
@configurationProperties:默认从全局配置文件中获取值;
配置文件占位符
person:
name: hzc${random.uuid} # 随机uuid
age: ${random.int} # 随机int
happy: false
birth: 2000/01/01
maps: {k1: v1,k2: v2}
lists:
- code
- girl
- music
dog:
name: ${person.hello:other}_旺财
age: 1
properties配置
@Component //注册bean
@PropertySource(value = "classpath:user.properties")
public class User {
//直接使用@value
@Value("${user.name}") //从配置文件中取值
private String name;
@Value("#{9*2}") // #{SPEL} Spring表达式
private int age;
@Value("男") // 字面量
private String sex;
}
对比小结
@ConfigurationProperties | @Vaule | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定 | 支持 | 不支持 |
SpEL(Spring EL表达式) | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
#配置文件到底能配什么----联系---spring.factories
# 在我们这配置文件中能配置的东西,都存在一个固有的规律
# xxxAutoConfiguration:默认值 xxxProperties和配置文件绑定,我们就可以使用自定义的配置了!
//@SpringBootApplication:标注这是一个springboot的应用 :启动类下的所有资源被导入
@SpringBootApplication
public class Springboot01HellospringbootApplication {
public static void main(String[] args) {
//将springboot应用启动
//springboot类
//run方法
SpringApplication.run(Springboot01HellospringbootApplication.class, args);
}
}
松散绑定
比如我的yml中写的last-name,这个和lastName是一样的, - 后面跟着的字母默认是大写的。这就是松散绑定。
JSR303数据校验
这个就是我们可以在字段是增加一层过滤器验证 , 可以保证数据的合法性
@Validated //数据校验
@NotNu11(message="名字不能为空" )
private String userName;
@Max(value=120 , message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;
空检查
@Nu1l 验证对象是否为null
@NotNull 验证对象是否不为nu1l,无法查检长度为0的字符串
@NotBlank 检查约束T符串是不是Nu11还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty 检查约束元素是否为NULL或者是EMPTY.
Booelan检查
@AssertTrue 验证Boolean对象是否为true
@AssertFalse 验证Boolean对象是否为false
长度检查
@Size(min=, max=) 验证对象(Array, Collection,Map, String)长度是否在给定的范围之内
@Length(min=, max=) Validates that the annotated string is between min and max included.
日期检查
@Past 验证Date和Calendar对象是否在当前时间之前
@Future 验证Date和Calendar对象是否在当前时间之后
@Pattern 验证String对象是否符合正则表达式的规则:正则表达式
等等
除此以外,我们还可以自定义- -些数据校验规则.
导入spring-boot-starter-validation依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
多环境配置
.properties配置
application.properties
application-test.properties 通过 spring.profiles.active=dev 来进行配置
application-dev.properties
.yaml配置
# 多环境切换
server:
port: 8081
#选择要激活那个环境块
spring:
profiles:
active: dev
---
server:
port: 8082
spring:
profiles: test #配置环境的名称
---
server:
port: 8083
spring:
profiles: dev #配置环境的名称
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件:
优先级1:项目路径下的config文件夹配置文件
优先级2:项目路径下配置文件
优先级3:资源路径下的config文件夹配置文件
优先级4:资源路径下配置文件