关于SpringBoot的配置文件使用
一、配置文件
- SpringBoot的配置文件有三种,properties、yml、yaml三种
1.1 正常配置修改
1 2
| 配置端口号: server.port=8081
|
1 2 3
| 配置端口号: server: prot: 8081
|
注意:在”:”后面要空一个,再接参数
1.2 给对象赋值
创建一个JavaBean对象
1 2 3 4 5 6 7 8 9 10
| @Component public class Person { private String name; private int age; private boolean isMan; private Date birthday; private Map<String,Object> maps; private List<String> lists; private Dog dog; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| @Component @PropertySource(value = "classpath:test.properties") public class Person { @Value("${name}") private String name; @Value("${age}") private int age; private boolean isMan; private Date birthday; private Map<String,Object> maps; private List<String> lists; private Dog dog; }
|
- (2)yaml文件
- yaml文件不仅可以进行简单的赋值
- 还可以赋值其他参数,集合、对象、数组…
1 2 3 4 5 6 7 8 9 10 11
| 配置文件 person: name: 莱特雷 age: 22 boolean: true birthday: 2019/12/12 maps: {key1: value1,key2: value2} lists: [代码, 音乐, 看小电影] dog: name: 小白 age: 1
|
1 2 3 4 5 6 7 8 9 10 11
| @Component @ConfigurationProperties(prefix = "person") public class Person {
private String name; private int age; private boolean isMan; private Date birthday; private Map<String,Object> maps; private List<String> lists; private Dog dog;
|
- 总结:properties的作用非常有限,所以一般都推荐使用yaml作为配置文件
1.3 yaml文件特有方法
- (1)松散绑定
- 即驼峰命名,配置文件中last-name和类中lastName是可以识别,并复制
- 但要保证类中get set方法不出错
1 2 3 4 5
| 添加启动器依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 在JavaBean进行配置 @Component @ConfigurationProperties(prefix = "person") @Validated public class Person {
@Email private String name; private int age; private boolean isMan; private Date birthday; private Map<String,Object> maps; private List<String> lists; private Dog dog; }
|
注解 |
说明 |
@Null |
被注释的元素必须为null |
@NotNull |
被注释的元素必须不为null |
@AssertTrue |
被注释的元素必须为true |
@AssertFalse |
被注释元素必须为fasle |
@Min(value) |
被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@Max(value) |
被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@DecimalMin(value) |
被注释的元素必须是一个数字,其值必须大于等于指定的最小值,小数存在精度 |
@DecimalMax(value) |
被注释的元素必须是一个数字,其值必须小于等于指定的最大值,小数存在精度 |
@Size(max, min) |
被注释的元素的大小必须在指定的范围内 |
@Digits (integer, fraction) |
被注释的元素必须是一个数字,其值必须在可接受的范围内 |
@Past |
被注释的元素必须是一个过去的日期 |
@Future |
被注释的元素必须是一个将来的日期 |
@Pattern(regex=) |
被注释的元素必须符合指定的正则表达式 |
@Valid |
被注释的元素需要递归验证 |
注解 |
说明 |
@Email |
被注释的元素必须是电子邮箱地址 |
@Length(min=下限, max=上限) |
被注释的字符串的大小必须在指定的范围内 |
@NotEmpty |
被注释的元素的必须非空并且size大于0 |
@NotBlank |
被注释的元素必须不为空且不能全部为’ ‘(空字符串) |
@Range(min=最小值, max=最大值) |
被注释的元素必须在合适的范围内 |
二、配置文件的位置
三、多环境配置
- (1)properties配置
- 一个环境创建一个配置文件
- 文件形式为: application-环境名.properties
- 在默认配置文件application.properties中
- 使用:spring.profiles.active=环境名,来进行环境切换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| server: port: 8081
spring: profiles: active: dev --- server: port: 8082
spring: profiles: dev
--- server: port: 8083
spring: profiles: test
|
四、可以配置的参数
由于SpringBoot可以配置的参数过于多,所以不会一一列出来,而是教利用源码查找方法
- (2)来
ServerProperties
来进行举例
- 总结 :可以通过搜索properties寻找可以配置的属性