yaml的基本语法
yaml语法对空格的要求非常严格,对其关系要明确
必须用空格键,不可以用tab键
- 注释用#
- key value 的形式获取值
key:空格value
例:
student:胡歌
对象的形式:
student:
name: 胡歌
age: 33
行内对象的形式:
student:{name: 胡歌,age: 33}
student: 胡歌
#对象
student:
name: 胡歌
age: 33
#行内的形式
student: {name: 胡歌,age: 33}
#数组
pets:
-cat: 猫
-dog: 狗
-fox: 狐狸
通过配置文件配置实体类
person:
name: 胡歌
age: 33
like: false
map: {k1: v1,k2: v2}
lists:
- ll
- wa
- lis
birth: 2022/09/22
dog:
name: 狗子
age: 3
实体类
@Component 组件被管理
@ConfigurationProperties(prefix = "person") 配置
public class Person {
private String name;
private Integer age;
private Map<String,Object> map;
private List<Object> lists;
private Boolean like;
private Dog dog;
private Date birth;
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 Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public List<Object> getLists() {
return lists;
}
public void setLists(List<Object> lists) {
this.lists = lists;
}
public Boolean getLike() {
return like;
}
public void setLike(Boolean like) {
this.like = like;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", map=" + map +
", lists=" + lists +
", like=" + like +
", dog=" + dog +
", birth=" + birth +
'}';
}
}
通过properties配置文件
@Component
//@ConfigurationProperties(prefix = "person")
//配置文件
@PropertySource("classpath:application.properties")
public class Person {
//spring的SPEL表达是取出配置文件中的值
@Value("${name}")
private String name;
private Integer age;
private Map<String,Object> map;
private List<Object> lists;
private Boolean like;
private Dog dog;
private Date birth;
通过占位符配置文件
yaml中的松散绑定
在yml文件中,属性名通过“-”连接,同样可以达到赋值的目的,实体类用驼峰命名的方式。
JSR303校验
通过注解的方式,对入参数据进行校验,具体使用
import org.springframework.validation.annotation.Validated;//数据校验注解
import javax.validation.constraints.Email;//具体参数校验
@Component
@ConfigurationProperties(prefix = "person")
//@PropertySource("classpath:application.properties")
@Validated //数据校验
public class Person {
//spring的SPEL表达是取出配置文件中的值
@Email(message = "名称格式错误")//可以自定义报错信息
private String name;
private Integer age;
当入参不满足校验条件时就会报错。
- JSR303注解
声明式校验 JSR303
-
定义
声明式校验,也称JSR303校验。 JRS303是Java为Bean数据合法性校验提供的标准框架,JSR303通过在Bean属性上标注类似于@NotNull、@NotBlank实现数据合法性校验。
-
相关注解
javax.validation.constraints.AssertFalse.message = 只能为false
javax.validation.constraints.AssertTrue.message = 只能为true
javax.validation.constraints.DecimalMax.message = 必须小于或等于{value}
javax.validation.constraints.DecimalMin.message = 必须大于或等于{value}
javax.validation.constraints.Digits.message = 数字的值超出了允许范围(只允许在{integer}位整数和{fraction}位小数范围内)
javax.validation.constraints.Email.message = 不是一个合法的电子邮件地址
javax.validation.constraints.Future.message = 需要是一个将来的时间
javax.validation.constraints.FutureOrPresent.message = 需要是一个将来或现在的时间
javax.validation.constraints.Max.message = 最大不能超过{value}
javax.validation.constraints.Min.message = 最小不能小于{value}
javax.validation.constraints.Negative.message = 必须是负数
javax.validation.constraints.NegativeOrZero.message = 必须是负数或零
javax.validation.constraints.NotBlank.message = 不能为空
javax.validation.constraints.NotEmpty.message = 不能为空
javax.validation.constraints.NotNull.message = 不能为null
javax.validation.constraints.Null.message = 必须为null
javax.validation.constraints.Past.message = 需要是一个过去的时间
javax.validation.constraints.PastOrPresent.message = 需要是一个过去或现在的时间
javax.validation.constraints.Pattern.message = 需要匹配正则表达式"{regexp}"
javax.validation.constraints.Positive.message = 必须是正数
javax.validation.constraints.PositiveOrZero.message = 必须是正数或零
javax.validation.constraints.Size.message = 个数必须在{min}和{max}之间
org.hibernate.validator.constraints.CreditCardNumber.message = 不合法的信用卡号码
org.hibernate.validator.constraints.Currency.message = 不合法的货币 (必须是{value}其中之一)
org.hibernate.validator.constraints.EAN.message = 不合法的{type}条形码
org.hibernate.validator.constraints.Email.message = 不是一个合法的电子邮件地址
org.hibernate.validator.constraints.Length.message = 长度需要在{min}和{max}之间
org.hibernate.validator.constraints.CodePointLength.message = 长度需要在{min}和{max}之间
org.hibernate.validator.constraints.LuhnCheck.message = ${validatedValue}的校验码不合法, Luhn模10校验和不匹配
org.hibernate.validator.constraints.Mod10Check.message = ${validatedValue}的校验码不合法, 模10校验和不匹配
org.hibernate.validator.constraints.Mod11Check.message = ${validatedValue}的校验码不合法, 模11校验和不匹配
org.hibernate.validator.constraints.ModCheck.message = ${validatedValue}的校验码不合法, ${modType}校验和不匹配
org.hibernate.validator.constraints.NotBlank.message = 不能为空
org.hibernate.validator.constraints.NotEmpty.message = 不能为空
org.hibernate.validator.constraints.ParametersScriptAssert.message = 执行脚本表达式"{script}"没有返回期望结果
org.hibernate.validator.constraints.Range.message = 需要在{min}和{max}之间
org.hibernate.validator.constraints.SafeHtml.message = 可能有不安全的HTML内容
org.hibernate.validator.constraints.ScriptAssert.message = 执行脚本表达式"{script}"没有返回期望结果
org.hibernate.validator.constraints.URL.message = 需要是一个合法的URL
多个配置文件位置及优先级,文件夹不可少,application不可改
多环境配置
- 通过 properties文件来配置环境
- 通过yml文件来配置
在yml文件中配置多个环境的参数,通过active选择激活的配置文件,一个文件实现多个环境配置。