当前位置:网站首页>@ConfigurationProperties使用不当引发的bug
@ConfigurationProperties使用不当引发的bug
2022-06-30 00:21:00 【-edui】
现象
平时使用自定义配置时一般都是通过@Value这种方式取配置值的,如果配置不存在或者书写有误spring就会启动报错。有一天需要自定义配置比较多,如果每个引用的地方都通过@Value获取配置的话不仅不方便管理而且很多重复的操作,比如改个名字就需要到处找然后挨个修改。已是就改用@ConfigurationProperties的方式将一堆配置统一放一个类里面管理。上线的时候将测试环境的配置拷到生产环境,因为是一样的,所以笃定没啥问题自信上线。结果一上就出问题,看日志知道ConfigurationProperties的值为空的,没取到配置文件的值。
解决
经过检查发现拷贝测试环境配置的时候由于不小心,少了一个空格,因为配置都是放到配置中心nacos的,所以没有提示,导致通过prefix匹配不到正确的值而为空。要是使用@Value的话启动就报错,不至于上线才发现问题了。因为 ** @ConfigurationProperties获取配置,如果配置不存在值就为空,@Value获取配置,如果配置不存在就会抛出异常 ** 。
扩展
@ConfigurationProperties这个注解大多数是在做自动装配时,自动获取配置文件配置属性值的,例如
从设计上来理解根据spring boot约定优于配置的理念,一般会设置默认值,所以@ConfigurationProperties获取配置应该是允许为空的。
spring boot作者估计也想到这样做估计会经常有写错的情况。所以就设计了一个元数据的概念,这些元数据能够为在配置application.yml或者application.properties时提供属性说明、默认值和自动补全。放在META-INF目录下spring-configuration-metadata.json文件中。自己项目里面的自定义配置可以编写一个这样的元数据文件,这样IDEA自动识别,写错了会提示。当然也可以通过spring-boot-configuration-processor工具自动扫描到@ConfigurationProperties注解的类生成元数据文件。例如spring boot的元数据如下
边栏推荐
- 云呐|固定资产系统管理的优势,固定资产管理系统有何特点
- js中的事件
- 请指教在线开户是什么意思?另外想问,现在在线开户安全么?
- Solr basic operation 6
- 01 backpack problem
- AI chief architect 9- huxiaoguang, propeller model library and industry application
- Analysis of common vlog parameters
- Sword finger offer II 035 Minimum time difference
- 《性能之巅第2版》阅读笔记(四)--Memory监测
- 爬虫入门实战:斗鱼弹幕数据抓取,附送11节入门笔记
猜你喜欢
![Cloner un Graphe non recté [bfs accède à chaque bord et pas seulement aux noeuds]](/img/34/2a1b737b6095293f868ec6aec0ceeb.png)
Cloner un Graphe non recté [bfs accède à chaque bord et pas seulement aux noeuds]

Sword finger offer II 035 Minimum time difference

JS绘制极坐标颜色渐变

Digital collection of cultural relics, opening a new way of cultural inheritance

Three postures of anti CSRF blasting
![复制带随机指针的链表[空间换时间--hash记录]](/img/d9/d81e0e4f81174c61275e4affe0777a.png)
复制带随机指针的链表[空间换时间--hash记录]

Can't recognize the original appearance

MySQL高级篇2

SOFARegistry 源码|数据同步模块解析

QT learning 07 coordinate system in QT
随机推荐
SOFARegistry 源码|数据同步模块解析
Solr基础操作13
项目一:部署 LAMP ecshop电商平台
克隆无向图[bfs访问每条边而不止节点]
vsftp 与 TFTP 与 samba 与 nfs 复习
MySQL:SQL概述及数据库系统介绍 | 黑马程序员
QT learning 03 birth and essence of QT
Activity invitation | the Apache Doris community essay and speech solicitation activity has begun!
Majority element ii[molar voting method for finding modes]
This PMP Exam (June 25), some people are happy and others are worried. That's why
Solr基础操作14
label问题排查:打不开标注好的图像
爬虫入门实战:斗鱼弹幕数据抓取,附送11节入门笔记
剑指 Offer II 035. 最小时间差
Automatic integration: yescomusa, an overseas cross-border e-commerce, cooperates with cloud expansion to realize one-stop Automation Service
Solr基础操作6
gyctf_ 2020_ document
利用 CertBot 申请 Let’s Encrypt SSL 证书
Quick pow: how to quickly find power
MySQL基础3