标签:not sse 端口 config 比较 etl 文件名 优先级 lis
spring boot使用一个全局的配置文件,配置文件名称是固定的。配置文件的作用就是修改spring boot自动配置的默认值,因为在底层所有配置都是配置好的,这个文件只是用来修改。
语法结构:key=value
# 更改项目的端口号
server.port=8081
官方推荐使用
语法结构: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对象是否符合正则表达式的规则
...
按优先级从上到下:
实际工作中我们可能会有开发环境一个配置文件、测试环境一个配置文件、生产环境一个配置文件的情况。spring boot中可以根据一个spring.profiles.active的配置,进行配置文件间的切换。
标签:not sse 端口 config 比较 etl 文件名 优先级 lis
原文地址:https://www.cnblogs.com/jinshengnianhua/p/14745298.html