@ConfigurationProperties Spring Boot配置文件取数据

文章目录

    • @ EnableConfigurationProperties 简绍
    • 使用 @ConfigurationProperties
    • 源码解析
        • 注解元注解
        • 注解属性
        • 列表项配置文件读取:
        • 属性绑定:
        • 错误处理:
    • 注意事项

@ EnableConfigurationProperties 简绍

@EnableConfigurationProperties 是一个 Spring Boot 提供的注解,用于启用特定的 @ConfigurationProperties 类。这个注解通常用在 Spring 的配置类上,以显式地声明哪些 @ConfigurationProperties 类应该被 Spring 容器管理。

使用 @ConfigurationProperties

创建配置类: 创建一个 Java 类来保存配置属性。 同时需要施加 @Component 确保 能检测到识别bean
通过使用@Component注解,我们可以方便地进行组件的管理和依赖注入,具体后续再说 使用 @Autowired 去进行注入,
如果是在配置类中使用 @EnableConfigurationProperties,则需要在配置类上添加该注解,并指定要启用的配置类。

@Component
@Data
@ConfigurationProperties(prefix = "test")
public class Test {private String test1;private String test2;
}
1

对应 Controller 去调用,使用

@RequestMapping("/test")
public class TestController {@AutowiredTest test;@GetMapping("/test")public void test(){System.out.println(test.getTest1());System.out.println(test.getTest2());}
}

在配置文件中的定义, ConfigurationProperties通过识别 ConfigurationProperties 的 prefix 前缀来对应配置文件中配置的信息

test:test1: 张三test2: 李四

源码解析

注解元注解
  • @Target:指定了此注解可以应用的有效目标类型。
    {ElementType.TYPE, ElementType.METHOD} 表示它可以应用于类和方法。
  • @Retention:指定了注解的保留策略。
    RetentionPolicy.RUNTIME 表示该注解将在运行时存在,并且可以通过反射读取。
  • @Documented:表示该注解应该包含在 API 文档中。
  • @Indexed:这个注解表明被标注的元素将被 Spring 框架索引。它通常与 @Component 和类似的注解一起使用
注解属性
  • value() 和 prefix():这两个属性是互为别名的,用于指定配置文件中属性的前缀。默认情况下,如果没有指定前缀,则默认为空字符串。
  • ignoreInvalidFields():此属性指定是否忽略无效字段。如果设置为 true,那么即使某些字段无法映射到类的属性上,也不会抛出异常。默认值为 false。
  • ignoreUnknownFields():此属性指定是否忽略未知字段。如果设置为 true,那么即使配置文件中存在未在类中定义的属性,也不会抛出异常。默认值为 true
列表项配置文件读取:

Spring Boot 使用 PropertySourceLocator 接口来定位和加载配置源。
通常情况下,Spring Boot 会自动检测 application.properties 或 application.yml 文件,并将它们加载到 Environment 中。

属性绑定:
  • 当一个类被标记了 @ConfigurationProperties 注解后,Spring Boot 会使用 ConfigurationPropertiesBinder 来 将配置文件中的属性绑定到该类的字段上。
  • ConfigurationPropertiesBinder 依赖于 ConversionService 和 PropertyEditorRegistry 来转换类型。
  • 如果配置文件中的属性名称与类的字段名称匹配,它们将被自动绑定。
错误处理:

如果配置文件中的属性无法正确绑定到类的字段上,可能会抛出 BindException 或 IllegalStateException。
配置启用:
为了使 @ConfigurationProperties 生效,还需要使用 @EnableConfigurationProperties 或将配置类标记为 @Component。

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interface ConfigurationProperties {@AliasFor("prefix")String value() default "";@AliasFor("value")String prefix() default "";boolean ignoreInvalidFields() default false;boolean ignoreUnknownFields() default true;
}

注意事项

  • 自动配置:
    如果你使用的是 Spring Boot,通常情况下你不需要显式地使用 @EnableConfigurationProperties,因为 Spring Boot 自动配置会处理 @ConfigurationProperties 类的注册。但是,如果你需要显式地控制注册过程或者你的应用不是基于 Spring Boot 构建的,那么使用 @EnableConfigurationProperties 是必要的。
  • 可选性:
    当你的 @ConfigurationProperties 类是在 Spring Boot 应用的默认扫描路径内时,你可能不需要使用 @EnableConfigurationProperties,因为 Spring Boot 会自动发现这些类。
  • 多配置类:
    如果你有多个 @ConfigurationProperties 类,可以在 @EnableConfigurationProperties 注解中使用 {} 来指定多个类。
  • 配置前缀:
    确保 @ConfigurationProperties 的 prefix 属性与你的配置文件中的键名匹配。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/410132.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java+SpringBoot+Vue的知识管理系统

基于JavaSpringBootVue的知识管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 哈喽…

利用“2+1链动模式小程序AI智能名片S2B2C商城源码”优化企业参与外部社群策略

摘要:在当今数字化时代,企业参与外部社群已成为其市场扩张、品牌塑造及用户增长不可或缺的一环。然而,面对浩如烟海的社群类型,包括行业论坛、地区性论坛、特定兴趣爱好的论坛以及短视频网站等,如何精准选择并有效介入…

计算机网络-PIM-SM组播实验

一、概述 目前为止我们学习了组播转发网络中的PIM协议,PIM模型有两种: PIM-DM主要使用在网络规模较小,用户集中的组播网络中。 PIM-SM主要使用在网络规模较大,用户较为分散的组播网络中。PIM-SM基于组播模型又可以分为PIM-SM&…

重装系统前如何备份数据?让重装无后顾之忧

在日常使用电脑的过程中,有时我们可能需要重装系统以解决一些难以通过常规手段解决的问题。然而,在重装系统之前,最重要的一步就是备份数据,以防止重要信息的丢失。本文将详细介绍如何在重装系统前进行数据备份,确保您…

周报(8.12-8.18)

周报(8.12-8.18) 本周工作 DD-Net学习与代码复现 DD-Net网络结构如上图所示。DD-Net也有一个为处理OpenFWI数据的版本:DD-Net70: 与传统DL-FWI不同的是,DD-Net同时拥有两个解码器,第一个解码器的目标是传统的速度模型&#xff0…

力扣第71题:简化路径 放弃栈模拟,选择数据流√(C++)

目录 题目 思路 解题过程 复杂度 Code 题目 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 / 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点&#xff…

医生隐瞒病情属于什么行为?

根据《民法典》第一千二百二十二条的规定,患者在诊疗活动中受到损害,有下列情形之一的,推定医疗机构有过错:   (一)违反法律、行政法规、规章以及其他有关诊疗规范的规定;   (二…

LLMs 基础知识 | BERT 模型族

本文主要文章是解决蚂蚁金服携手上海财经大学,共同出具大预言模型白皮书一文中的部分模型问题。 01 Slef-Attention 注意力机制,注意力权重可以看作是输入对输出的重要程度。这里注意,所谓注意力,即模型认为该单词有多值得被注意…

基于BlockQueue的生产消费模型及Linux中的信号量

基于BlockQueue的生产消费模型 Task.hpp #pragma once#include<cstdio> #include<iostream> #include<string> #include<functional>using namespace std; class CalTask {using func_tfunction<int(int,int,char)>;//typedef function<int(…

妙用 Batch,StarRocks 存算分离实时性能起飞

前言 当大家提到存算分离时&#xff0c;尤其是考虑后端使用 AWS S3 为代表的对象存储作为数据存储时&#xff0c;直觉就是性能拉胯&#xff0c;只能用作批量数据处理场景&#xff0c;至少这是我在跟很多用户交流时获得的第一感受。而 StarRocks 作为一个具备强实时性数据分析引…

Vue实现zip压缩下载

1&#xff0c;安装依赖npm //jszip是一个用于创建、读取和编辑.zip文件的JavaScript库 https://stuk.github.io/jszip/ npm install jszip https://www.npmjs.com/package/file-saver npm install file-saver 2&#xff0c;在所需的页面中引入对应包 import JSZip from &…

【启明智显分享】智能音箱AI大模型一站式解决方案重塑人机交互体验,2个月高效落地

2010年左右&#xff0c;智能系统接入音箱市场&#xff0c;智能音箱行业在中国市场兴起。但大潮激荡&#xff0c;阿里、小米、百度三大巨头凭借自身强大的资本、技术、粉丝群强势入局&#xff0c;形成三足鼎立态势。经过几年快速普及&#xff0c;智能音箱整体渗透率极高&#xf…

【课件分享】电子档案库房——构筑档案数字资源长期保存的安全防线

关注我们 - 数字罗塞塔计划 - 如此重磅的会议&#xff0c;如此高能的干货&#xff0c;小编已经迫不及待第一时间分享给大家&#xff0c;一起来看看杨博士在学术交流活动上的演讲内容吧。 01 课件分享 一、背景现状 二、总体设计 详细视频请在公众号中观看 三、解决方案 四、应…

汽车线束品牌服务商推荐-力可欣:致力于汽车连接线束和汽车连接器的开发、生产和应用

汽车线束品牌服务商推荐-力可欣&#xff1a;致力于汽车连接线束和汽车连接器的开发、生产和应用

安卓13 背光调节非线性问题处理,调节范围不正常问题

总纲 android13 rom 开发总纲说明 目录 1.前言 2.问题分析 3.代码修改 4.彩蛋 1.前言 我们看看现在的版本的亮度图 2.问题分析 当背光亮度设置为0%时,每次按下亮度增加键或者 input keyevent BRIGHTNESS_UP,亮度UI的增幅较大,首次按下后亮度平滑提升至大约55%,随后继…

深入调研亚马逊云科技AI平台Amazon Bedrock热门开发功能

国际数据公司&#xff08;IDC&#xff09;在2024 年 8 月发布了《 中国大模型平台市场份额&#xff0c; 2023 &#xff1a;大模型元年——初局 》调研报告 。IDC的数据显示&#xff0c;2023年中国大模型平台及相关应用市场规模达惊人的17.65亿元人民币&#xff0c;且科学计算大…

售后更新出现问题分析-幂等和防重

2024-08-27 早上测试提交BUG,说售后单状态流转不对&#xff0c;吓得我一激灵&#xff0c;赶紧打开IDEA 查看代码&#xff0c;发现售后这块代码没有动过呀&#xff0c;咋回事&#xff1f; 流程是这样的&#xff1a; 测试模拟用户下单&#xff0c;提交订单后付款&#xff0c;然后…

基于顺序表实现通讯录功能项目

本文通过顺序表实现通讯录的功能&#xff0c;增删查改数据 首先实现顺序表的功能&#xff0c;再用顺序表实现通讯录的功能 顺序表中的成员为一个结构体对象con&#xff0c;自定义的类型&#xff0c;里面包含着联系人的姓名性别年龄电话地址 seqlist.h&#xff1a;顺序表头文…

摩尔线程 × 智汇云舟|打造视频孪生国产解决方案

近日&#xff0c;摩尔线程与国内数字孪生头部企业和视频孪生首倡者智汇云舟达成深度战略合作&#xff0c;双方将在技术融合、产品共创和市场推广领域加强合作&#xff0c;共同研发面向未来的视频孪生国产化解决方案&#xff0c;推动视频孪生技术在国内关键领域的应用落地&#…

闲置物品|基于SprinBoot+vue的校园闲置物品交易平台(源码+数据库+文档)

校园闲置物品交易平台 目录 基于SprinBootvue的校园闲置物品交易平台 一、前言 二、系统设计 三、系统功能设计 5.1系统功能实现 5.2管理员模块实现 5.3用户模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xf…