1、在SpringBoot中,可以使用@ConfigurationProperties注解结合配置文件给实体赋值,也可以使用@Value注解直接赋值
@Component
//@ConfigurationProperties(prefix = "student")
public class Student {
@Value("ww")
private String name;
@Value("23")
private int age;
...
// 不管注入的值时什么类型都写在双引号中
且两种方法可以同时使用,@ConfigurationProperties注解的优先级高,会覆盖@Value的值。@ConfigurationProperties注解是一次注入全部,而@Value是单个注入
2、@ConfigurationProperties注解支持松散语法,@Value不支持
- java实体类中的驼峰命名规则如 nickName,在yml中可以使用-代替如nick-name
private String nickName;
pet:
nick-name: wc
3、@Value支持SpEL表达式,@ConfigurationProperties不支持
- 可以将yml文件中的某个属性值注入到该属性上
@Value("${pet.uname}")
private String nickName;
pet:
uname: wc
4、@ConfigurationProperties支持JSR303校验,@Value不支持
@Component
@ConfigurationProperties(prefix="student")
@Validated // 开启jsr303校验
public class Student{
@Email
private String email;
}
studnet:
email: 1212@qq.com
5、@ConfigurationProperties支持注入复杂类型,@Value不支持
- 简单类型(8种基本数据类型/String/Date)
- @Value不支持注入复杂类型
@Value("{province: 湖北,city: 武汉, zone: 洪山}")
private Map<String, Object> location;
这种会直接报错