springboot配置属性中的宽松绑定

【Springboot】注解@ConfigurationProperties让配置整齐而简单 1 简介 前面我们用一篇文章《【Spring】只想用一篇文章记录@Value的使用,不想再找其它了(附思维导图)》 详细讲解了在Spring中如何使用@Value来实现我们对配置的需求,它功能强大、使用方便。但它也是有它的局限性的,比如对于邮件服务,我们配置有: mail.hostname=smtp.qq.com mail.username=larry@qq.com mail.password=1... 阅读详情

@ConfigurationProperties绑定属性支持属性名宽松绑定,而@Value不支持宽松绑定。宽松绑定的具体规则为:

绑定前缀名命名规范:仅能使用纯小写字母、数字、下划线作为合法的字符(一般我们都用纯小写字母)

范例:

@Component
@Data
public class DataSoureConfig {
    @Bean
    @ConfigurationProperties(prefix = "datasource")
    public DruidDataSource druidDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }
}
dataSource:
  driverClassName: com.mysql.jdbc.Driver456

范例解释:虽然我们在application.yml中使用了带有大写字母的dataSource配置,但是在配置类中,我们依然使用全小写datasource,不然会报错。

12-配置属性绑定 Spring Boot 配置属性绑定摘要 Spring Boot 提供强大的配置绑定机制,主要通过 @ConfigurationProperties 将外部配置注入 Java 对象。支持简单类型、嵌套对象、集合类型等多种数据结构,并提供宽松绑定规则适应不同命名风格。 核心特性包括: 类型安全绑定 - 自动转换配置值到目标类型 嵌套配置 - 支持复杂对象层级结构 校验支持 - 结合 JSR-303 注解进行参数校验 宽松绑定 - 兼容驼峰、短横线、下划线等命名格式 元数据支持 - 提供配置提示和文档生成 相比 阅读详情

相关推荐

Innovus每日精要 | 用setScanReorderMode优化扫描链,效率翻倍!

在数字后端物理设计的世界里,扫描链优化就像修路一样,既要保证数据流的顺畅,又要尽量减少绕路和资源浪费。它的主要任务是优化扫描链的连接方式,确保数据能快速、安全地流动。无论是多电压域设计、分区设计,还是复杂的逻辑门,它都能帮你搞定。后,你会发现它不仅能帮你节省时间,还能让你的设计更优雅、更高效。下次遇到扫描链问题时,不妨试试这些技巧,说不定你的设计效率会翻倍!,它能帮你搞定扫描链优化的那些事儿,让你的设计更高效、更优雅。接下来,我们看看这个命令的几个关键选项,以及它们的实际用途。扫描链优化看似枯燥,但掌握。

weixin_50820814的博客 1442

springboot松散绑定

通过使用这个注解,我们可以注入一些简单类型的值(int,String,boolean等),也可以注入一个复杂对象。这个注解可以标记在类的属性上,表示将该属性的值与配置文件中的某个属性的值进行绑定。springboot进行编程时人性化设计的一种体现,即配置文件中的命名格式与变量名的命名格式可以进行格式上的最大化兼容。以上4种命名去掉下划线中划线忽略大小写后都是一个词ipaddress,java代码中的属性名忽略大小写后也是ipaddress,这样就可以进行等值匹配了,设置一个默认值,相当于是一个兜底的方案。

一个菜鸡的博客 838

lenovo联想拯救者Legion Y9000P 2022款2023款2024款笔记本电脑(82RF,82WK,82WQ,83DE,83DF)原装出厂Windows11预装OEM系统镜像下载

联想原装出厂系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软件、联想电脑管家、联想浏览器、联想软件商店、legionzone控制中心等预装程序。链接:https://pan.baidu.com/s/1YBji_oh7xOkq-NxnS8Mm8g?链接:https://pan.baidu.com/s/1S7_enXmuoja1a9ASvUT5Fg?拯救者Legion Y9000P IRX9H 2024款【83DE】原厂Win11系统包。

QQ17855069的博客 6520

Spring框架中@Value宽松绑定机制解析

Spring框架的@Value注解支持宽松绑定机制,允许属性名在不同命名格式(驼峰式、短横线式、下划线式)下都能正确注入值。该特性通过底层属性名标准化处理实现,核心类为ConfigurationPropertyName,负责将各种格式的配置名统一转换为标准格式。RelaxedDataBinder类则负责处理实际绑定过程,通过尝试多种格式的别名绑定来确保配置值能正确注入。源码分析显示,Spring会识别分隔符并拆分元素,生成所有可能的别名格式进行匹配,从而实现对不同命名格式的兼容支持。

趁年轻,多去失败 402

从零构建腾讯滑块验证码破解引擎:逆向工程与实战对抗

本文深入解析腾讯滑块验证码(原天御验证码)的防护机制,包括环境感知层、行为分析层和验证决策层的核心技术。通过JSVMP虚拟机保护、轨迹验证算法和动态加密体系,腾讯验证码实现了高效的人机识别。文章还提供了安全研究实践指南,涵盖环境模拟和验证码识别方案,并探讨了防御对抗的演进趋势与合规研究建议。

rl6adventurer的博客 830

COMSOL电磁仿真-网格剖分-边界层

介绍COMSOL在低频电磁场中边界层网格的剖分方法。

奇妙水果的技术博客,欢迎交流技术~ 4483

Spring Boot参考指南:深入理解Relaxed Binding机制

Relaxed Binding(宽松绑定)是Spring Boot提供的一种灵活的属性绑定机制,它允许开发者在配置属性时采用多种命名风格,而Spring Boot能够智能地将这些不同格式的属性名绑定到对应的配置类字段上。这种机制极大地提高了配置的灵活性和容错性,使得开发者不必拘泥于严格的命名规范。 ## Relaxed Binding的工作原理 Spring Boot在将外部配置属性绑定到`@...

gitblog_01069的博客 547

手把手教你用TUSB2E22中继器实现eUSB2与USB 2.0互转(附实测数据对比)

本文详细介绍了如何利用TUSB2E22中继器实现eUSB2与USB 2.0的高效互转,包括技术背景、硬件设计要点、信号完整性测试方法及故障排查策略。通过实测数据对比,展示了TUSB2E22在信号延迟、功耗和眼图性能上的显著优势,为工程师提供了实用的工程方案。

weixin_29199873的博客 283

SpringBoot【实用篇】- 配置高级

在学习yml的时候我们了解到它是可以给对象进行属性注入的,有那么几个前提,yml中有配置,项目中有对应的实体类,用于封装数据且属性名一一对应 我在我的com.example包下创建了一个config的包包中写了这样一个类: yml中 我们想为上面的类赋上我们的配置文件的值就需要加上 验证: 这里选择在引导类中进行测试 但是又有一个问题:这个bean是我们自定义的bean,这个bean如果不是自定义的呢?如果是第三方的bean呢?如果这是一个数据源的bean,需要使用第三方bean加载的时候,该怎么做呢?这

2301_79602614的博客 1349

SMETANA 安装使用教程

关于SMETANA的安装和简单使用信息

qq_44940977的博客 1169

stc8g1k08硬件iic读取aht20温湿度及0.91寸oled显示

使用stc8g1k08读取aht20温湿度及0.91寸oled显示。

qq_61688416的博客 2771

配置高级(宽松绑定/松散绑定)

原因就是在进行匹配时,配置中的名称要去掉中划线和下划线后,忽略大小写的情况下去与java代码中的属性名进行忽略大小写的等值匹配,以上4种命名去掉下划线中划线忽略大小写后都是一个词ipaddress,java代码中的属性名忽略大小写后也是ipaddress,这样就可以进行等值匹配了,这就是为什么这4种格式都能匹配成功的原因。为什么会出现这种问题,这就要来说一说springboot进行属性绑定时的一个重要知识点了,有关属性名称的宽松绑定,也可以称为宽松绑定。可以与下面的配置属性名规则全兼容。

ITBOY_ITBOX博客 547

学Simulink——基于扩展卡尔曼滤波(EKF)的列车牵引电机转子温度在线估计仿真

本文介绍了一种基于扩展卡尔曼滤波(EKF)的列车牵引电机转子温度在线估计方法,通过Simulink建模实现。文章首先阐述了EKF在估计电机转子温度中的优势,即利用易测量信号(如电流、电压、转速)在线估计难以直接测量的转子温度,并分析了温升对电机性能的影响。随后详细讲解了电机热电增广模型的构建,包括定子电阻温度关系、一阶热近似模型和PMSM的dq轴方程。接着,文章提供了Simulink建模的详细步骤,包括PMSM+FOC电流环的搭建、EKF算法的实现(推荐使用ExtendedKalmanFilter块或MAT

xiaoheshang_123的博客 56

SpringBoot开发实用篇 - 配置高级 -configrationProerties注入,宽松绑定

SpringBoot开发实用篇 - 配置高级 -configrationProerties注入,宽松绑定

qq_39123467的博客 516

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

《SpringBoot篇》08.属性绑定规则及计量单位绑定

​ 其中Reason描述了报错的原因,规范的名称应该是烤肉串(kebab)模式(case),即使用-分隔,使用小写字母数字作为标准字符,且必须以字母开头。​ 为什么会出现这种问题,这就要来说一说springboot进行属性绑定时的一个重要知识点了,有关属性名称的宽松绑定,也可以称为宽松绑定。在进行匹配时,配置中的名称要去掉中划线和下划线后,忽略大小写的情况下去与java代码中的属性名进行忽略大小写的等值匹配,​ 但是每个人都这个值的理解会产生不同,可以是分钟,可以是小时,可以是秒。

陈老老老板的博客 1094

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SpringBoot3中的属性(配置变量)绑定

Spring Boot3提供了类型安全的属性绑定机制,主要通过@ConfigurationProperties注解将配置文件中的属性映射到Java对象。支持宽松绑定规则(多种命名格式)和构造函数注入方式。使用时需在启动类添加@EnableConfigurationProperties启用配置类,并通过prefix指定配置前缀。这种方式简化了配置管理,避免了硬编码和手动属性读取。

qq_46130027的博客 291

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring外部化配置:类型安全的配置属性(Type-safe Configuration Properties)

Spring外部化配置:类型安全的配置属性(Type-safe Configuration Properties)

听海边涛声 954

Bean属性绑定

EnableConfigurationProperties注解可以将使用ConfiguraionProperties注解对应的类加入Spring容器。注意:@EnableConfigurationProperties与@Component不能同时使用!解除使用@ConfigurationProperties注解警告。

m0_62198178的博客 86

SpringBoot-松散绑定/宽松绑定(Relaxed Binding)

SpringBoot-松散绑定/宽松绑定(Relaxed Binding)

weixin_49114503的博客 1941

SpringBoot--如何整体读取多个配置属性及其相关操作

1.简单入门2.配置加载、分析器、监听器、初始化器等3.如何给项目添加配置属性及读取属性4.如何整体读取多个配置属性及其相关操作5.Profile你用对了吗6.学会配置日志7.自动配置的替换和关闭8.如何创建自己的自动配置收起上篇文章讲到使用@Value注解每次只能读取一个配置属性,若要整体读取多个属性,或者读取具有某种结构关系的一组属性可使用@ConfigurationProperties注解来处理。看不懂没关系,下面会有代码示例。

weixin_37019116的博客 59

【SpringBoot】一文了解SpringBoot配置高级

本文介绍的是SpringBoot配置高级部分,课程是跟着黑马走的,所以会有一些借鉴,当然也是笔记,还会参考一些大佬的分享;这里的SpringBoot配置高级,并不是SpringBoot所有的高级配置;SpringBoot体系(或者说Spring)是十分庞大的,笔者也自知不能穷尽,故而只能把所学的东西拿来记一记,练一练。文章内容如若有误,还请大家批评指正。

未来可以改变 2962

升级Spring Boot 2.x后RelaxedPropertyResolver不可用的解决方案

外部化配置 轻松的绑定 有关宽松绑定的规则已经收紧。我们假设一个现有的acme.my-project.my-name属性: 所有前缀必须是 kebab格式(小写,连字符分隔)acme.myProject或acme.my_project无效 - 您必须acme.my-project在此处使用。 属性名称可以使用 kebab-case(my-name),camel-case(myName)或 snake-case(my_name)。 环境属性(来自操作系统环境变量)必须使用通常的大

D的博客 8027

[SpringBoot系列]进阶配置

之前咱们做配置使用的配置文件都是application.yml,其实这个文件也是可以改名字的,这样方便维护。比如我2020年4月1日搞活动,走了一组配置,2020年5月1日活动取消,恢复原始配置,这个时候只需要重新更换一下配置文件就可以了。但是你总不能在原始配置文件上修改吧,不然搞完活动以后,活动的配置就留不下来了,不利于维护。方式一:使用临时属性设置配置文件名,注意仅仅是名称,不要带扩展名方式二:使用临时属性设置配置文件路径,这个是全路径名也可以设置加载多个配置文件。

m0_67390379的博客 638
上一篇: 解除使用@ConfigurationProperties注释警告
day day debug
博客等级 码龄7年 0粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值