一、两种赋值对比
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
- @ConfigurationProperties只需要写一次即可,@Value则需要每个字段都添加
- 松散绑定:例如在yaml中写last-name,这个和lastName是一样的,-后面跟着的字母默认是大写的,这就是松散绑定
- 例如:沿用上一篇博客项目
实体类Cat部分代码
配置文件
测试效果
- JSR303数据校验,这个就是我们可以在字段是增加一层过滤器验证 ,可以保证数据的合法性
- 复杂类型封装,yamI中可以封装对象,使用@value就不支持
二、结论
- 配置yaml和配置properties都可以获取到值 ,强烈推荐 yaml
- 如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下@value
- 如果说,我们专门编写了一个JavaBean来和配置文件进行映射,就直接使用
@configurationProperties,不要犹豫!
三、JSR303校验
spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常 ,方便异常中心统一处理。
这里来写个注解让我们的name只能支持Email格式