一、两种赋值对比
| @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格式
修改实体类Person部分代码

测试效果

其它

344

被折叠的 条评论
为什么被折叠?



