ConfigurationProperties之宽松绑定

前面我们讲了ConfigurationProperties
但这个东西只能匹配小写
我这样写就正常
ConfigurationProperties之宽松绑定_第1张图片
但当我们将配置文件和属性类都改成大写时
配置文件一切正常
ConfigurationProperties之宽松绑定_第2张图片
但ConfigurationProperties就开始报错了
ConfigurationProperties之宽松绑定_第3张图片
这涉及到一个知识点 宽松绑定 也叫做 松散绑定

其实 ConfigurationProperties提供给我们了非常灵活自由的处理方式
ConfigurationProperties之宽松绑定_第4张图片
我们这里看到一个绑定对象内部的字段 这里以 units为例
ConfigurationProperties之宽松绑定_第5张图片
这里 我们将 属性类的units改成 小驼峰命名法 uniTs
ConfigurationProperties之宽松绑定_第6张图片
配置文件保持不变

然后我们条件装配并运行这个类型
ConfigurationProperties之宽松绑定_第7张图片
我们会发现 内容依旧装配上去了

很多人会想 不就是不区分大小写吗?很多东西都能实现呀 那我们来个狠的
我们配置文件改成这样
ConfigurationProperties之宽松绑定_第8张图片
我们属性类不做任何调整 重新运行代码
ConfigurationProperties之宽松绑定_第9张图片
可以看到 穿插了 下划线与中划线 依旧没有问题

我们狂一点
配置文件改纯大写 然后下划线分割
ConfigurationProperties之宽松绑定_第10张图片
然后我们属性类保持不动
再次运行代码
ConfigurationProperties之宽松绑定_第11张图片
会发现依旧没有出问题

简单说 你写的下划中划线 是直接被忽略的 然后 大小写它也能处理 只要名称的内容是一致的 就会匹配得到

最好的模式 是 内容-内容-内容
这种叫 烤肉串模式 因为 用中划线 看着像一根烤肉串 比如 data-user-name
下划线与驼峰 常量也都可以 官方的话最推荐的还是烤肉串的写法

ConfigurationProperties之宽松绑定_第12张图片
但这种宽松绑定 仅 ConfigurationProperties 大多数注解不能这样写
就例如之前的 @Value

你可能感兴趣的:(java)