SringBoot配置
SringBoot配置
1、配置文件
spring boot使用一个全局的配置文件,配置文件名称是固定的。配置文件的作用就是修改spring boot自动配置的默认值,因为在底层所有配置都是配置好的,这个文件只是用来修改。
application.properties
-
语法结构:key=value
# 更改项目的端口号 server.port=8081
application.yaml
-
官方推荐使用
-
语法结构:key:空格value
# 更改项目的端口号 server: port: 8081 # 可以存对象 student: name: jim age: 25 # 行内写法 student: {name: jim, age: 25} # 数组 pets: - cat - dog - pig # 行内写法 pets: [cat, pig, dog] -
yaml支持给实体类赋值
-
文件中还可以使用SPEL表达式
-
yaml是松散绑定,例如key值为first-name,实体类属性名为firstName,依旧可以绑定上
-
yaml支持JSR303校验
-
yaml给实体类赋值
-
@ConfigurationProperties(prefix = "xxx")
@Component @ConfigurationProperties(prefix = "person") public class Person { private String name; private Integer age; private boolean happy; private Date birth; private Map<String, Object> maps; private List<String> lists; private Dog dog; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public boolean isHappy() { return happy; } public void setHappy(boolean happy) { this.happy = happy; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } public Map<String, Object> getMaps() { return maps; } public void setMaps(Map<String, Object> maps) { this.maps = maps; } public List<String> getLists() { return lists; } public void setLists(List<String> lists) { this.lists = lists; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", happy=" + happy + ", birth=" + birth + ", maps=" + maps + ", lists=" + lists + ", dog=" + dog + '}'; } }public class Dog { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Dog{" + "name='" + name + '\'' + ", age=" + age + '}'; } }application.yaml
person: name: jim age: 25 happy: false birth: 2020/01/01 maps: {k1: v1, k2: v2} lists: [v1, v2, v3] dog: name: wangcai age: 3结果:
Person{name='jim', age=25, happy=false, birth=Wed Jan 01 00:00:00 CST 2020, maps={k1=v1, k2=v2}, lists=[v1, v2, v3], dog=Dog{name='wangcai', age=3}} -
properties文件其实也可以给实体类赋值,就是比较麻烦
-
先写一个配置文件person.properties
name=jim age=25 -
实体类使用@PropertySource(value="classpath:person.properties:")注解,在使用SPEL表达式注入属性值。
@Component @PropertySource(value="classpath:person.properties:") public class Person { @Value("${name}") private String name; @Value("${age}") private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } }
-
-
-
JSR303校验
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import org.springframework.validation.annotation.Validated; import javax.validation.constraints.NotBlank; @Component @ConfigurationProperties(prefix = "person") @Validated //数据校验 public class Person { @NotBlank // name不能为空 private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }-
如果@NotBlank引不到,可以尝试添加pom
<!-- JSR303校验 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> -
一些常见规则
@NotNUll(message="值不能为空") @Max(value=100, message="最大值不能超过100") @Email 空检查: @Null 验证对象是否为null @NotNull 验证对象是否不为null @NotBlank 检查字符串是否不为null,trim后的长度是否大于0 @NotEmpty 检查元素是否不为null或者不为Empty boolean检查: @AssertTrue 验证值是否为true @AssertFalse 验证值是否为false 长度检查: @Size(min= , max= ) 验证对象(Array,Collenction,Mao,String)长度是否在给定的范围内 @Length(min= , max= ) 验证字符串是否在长度范围内 日期检查: @Past 验证 Date 和 Calendar 对象是否在当前时间之前 @Future 验证 Date 和 Calendar 对象是否在当前时间之后 @Pattern 验证String对象是否符合正则表达式的规则 ...
-
2、配置文件位置
按优先级从上到下:
- file:./config/
- file:./
- classpath:/config/
- classpath:/

多环境配置
实际工作中我们可能会有开发环境一个配置文件、测试环境一个配置文件、生产环境一个配置文件的情况。spring boot中可以根据一个spring.profiles.active的配置,进行配置文件间的切换。
- properties配置文件

- yaml配置文件


浙公网安备 33010602011771号