springboot @ConfigurationProperties注册源码解析-松散绑定
参考:https://wenku.baidu.com/view/ccfcf417598102d276a20029bd64783e09127def.html https://blog.csdn.net/londa/article/details/107007686
一、源码解析(对应springboot源码查看)
org.springframework.boot.context.properties.source.ConfigurationPropertyName类重写了hashcode和equals,是为了保证属性名称与配置文件中(如yml)的定义属性名称的值相同。因为涉及Map,所以要重写hashcode和equals方法。具体参考hashcode和equals关系:https://zhuanlan.zhihu.com/p/347342971
二、松散的绑定约束使用
Spring Boot将Environment属性绑定到@ConfigurationProperties Bean时会使用一些宽松的规则,所以Environment属性名和Bean属性名不需要精确匹配。
比如在对象User中有一个firstName属性,那么在配置文件中对应如下配置项均会匹配:
user.firstName // 标准驼峰命名语法 user.first-name // 短横线隔开表示,推荐用于.properties和.yml文件中 user.first_name // 下划线表示,用于.properties和.yml文件的可选格式 USER_FIRST_NAME // 大写形式,推荐用于系统环境变量
备注:
我在使用jod-converter jar包时,发现ym配置文件l的jod converter配置属性(office-home)与jar包中的属性名(String officeHome)不一致,很不理解,经过调研,发现原来是springboot实现的属性松散绑定造成的,这样清晰多了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决