springboot (3. 3)@Value方式读取配置文件
一、@Value 获取值和 @ConfigurationProperties 获取值比较
- 如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用 @Value。
- 如果说,我们专门编写了一个 javaBean 来和配置文件进行映射,我们就直接使用 @ConfigurationProperties。
1. @Value 方式读取配置文件示例
- 配置文件
- JavaBean
注:@Value 不适合做复杂配置文件的读取,比如读取 maps,但是 @ConfigurationProperties 没问题。
2. @Value 和 @ConfigurationProperties 区别比较
@ConfigurationProperties | @Value | |
功能 | 推荐使用,可以批量注入,bean 类和配置文件属性对应会自动注入(包括复杂的结构)。 | 适合单个属性,一个一个的注入,有个性化需求时采用。 |
松散绑定(松散语法) | 比如 last-name 和 bean 中的 lastName 没有匹配上,但符合规范,bean 依然可以注入上,属于松散绑定。 | @Value 则不支持松散绑定。 |
SpEL | 不支持 | JavaBean 中支持计算,如:@Value("#{1*2}"),但在配置文件中不支持,如: |
JSR303数据校验 | 支持(如邮箱验证:看下例) | 不支持 |
复杂类型封装 | 支持 | 不支持 |
示例:邮箱验证
写在最后:
苦海无涯,你要不要上我的破船。