当我们为每个属性单独注解赋值
@ConfigurationProperties | @value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定 | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
ConfigurationProperties
只需要写一次即可,value
则需要每个字段都添加- 松散绑定,我的
yml
写的last-name
,这个和lastName
是一样的,-后main
跟着的字母默认是大写的,这就是松散绑定 JSR303
数据校验,这个就是我们在字段中增加一层过滤器验证,可以保证数据的合法性。- 复杂类型封装,
yml
中可以分装对象,使用@value
就不支持。
松散绑定
package com.example.springboot.test;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "dog")
public class Dog {
private String firstName;
private Integer age;
public Dog() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Dog{" +
"firstName='" + firstName + '\'' +
", age=" + age +
'}';
}
}
application.yml
dog:
first-name: 汪汪汪
age: 1
输出:
配置yml
和配置properties
都可以获取值,强烈推荐yml
如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用@value
如果需要专门编写一个javaBean来和配置文件激进型映射,就可以使用@ConfigurationProperties
。
JSR303数据校验
在类上加上@Validated
注解 //数据校验
JSR 提供的校验注解 :
注解 | 释义 |
---|---|
@Null | 被注释的元素必须为 null |
@NotNull | 被注释的元素必须为 false |
@Min(value | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@Max(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@DecimalMin(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@DecimalMax(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@Size(max=, min=) | 被注释的元素的大小必须在指定的范围内 |
@Digits (integer, fraction) | 被注释的元素必须是一个数字,其值必须在可接受的范围内 |
@Past | 被注释的元素必须是一个过去的日期 |
@Future | 被注释的元素必须是一个将来的日期 |
@Pattern(regex=,flag=) | 被注释的元素必须符合指定的正则表达式 |
Hibernate Validator 提供的校验注解 :
注解 | 释义 |
---|---|
@NotBlank(message =) | 验证字符串非 null,且长度必须大于 0 |
@Email | 被注释的元素必须是电子邮箱地址 |
@Length(min=,max=) | 被注释的字符串的大小必须在指定的范围内 |
@Range(min=,max=,message=) | 被注释的元素必须在合适的范围内 |
@NotEmpty | 被注释的字符串的必须非空 |