SpringBoot小知识(4):高级配置知识与bean的绑定

embedded/2024/12/27 4:18:45/

一、@EnableConfigurationProperties

@ConfigurationProperties注解在我们之前讲过,他是从配置中读取参数封装给实体类的一个注解。

在这里插入图片描述
那么@EnableConfigurationProperties是个啥呢?

@EnableConfigurationProperties 是 Spring Framework 中用于启用基于配置文件的属性绑定功能的注解。它通常与 @ConfigurationProperties 注解一起使用,用于将配置文件中的属性自动绑定到 Java 类的字段上,从而使得你可以在应用程序中方便地使用配置文件中的属性。

  1. @ConfigurationProperties: 用于标注一个 Java 类,该类的字段会自动绑定到外部配置文件(如 application.properties 或 application.yml)中的相关配置项。通过这种方式,配置项可以被注入到 Spring 容器中。
  2. @EnableConfigurationProperties: 用于启用对 @ConfigurationProperties 的支持。如果你的配置类是普通的 POJO,并且你希望 Spring 能够自动加载这些配置类,你需要使用 @EnableConfigurationProperties。

也就是说*ConfigurationProperties 里面的参数是配置文件中的参数名,而EnableConfigurationProperties的参数是你要封装的那个类的.class。
在这里插入图片描述

读取的文件

在这里插入图片描述
使用了@EnableConfigurationProperties,我们就不用在原本的class那里把它注册为Bean,可以统一的在使用的地方注册为Bean类方便我们管理。而且EnableConfigurationProperties可以用{}来包含多个class

java">@Configuration
@EnableConfigurationProperties({AppProperties.class, DatabaseProperties.class})
public class Config {// 其他配置类
}

二、宽松绑定

@ConfigurationProperties绑定属性支持属性名宽松绑定

YML:

在这里插入图片描述

绑定类:

在这里插入图片描述

我们可以看到,即使是有-这种的拼接,也可以读取到内容,实际上在YML文件中,_-大小写之类的都不影响绑定到实体类中的属性里面,实体类的大小写与配置文件中不是一模一样的也能绑定。


http://www.ppmy.cn/embedded/143213.html

相关文章

学习CSS第二天

学习文章目录 一.内部样式 一.内部样式 写在 html 页面内部&#xff0c;将所有的 CSS 代码提取出来&#xff0c;单独放在 <style> 标签中 语法&#xff1a; <style> h1 { color: red; font-size: 40px; } </style>注意点&#xff1a; <style> 标签理…

第十一课 Unity编辑器创建的资源优化_预制体和材质篇(Prefabs和Materials)详解

预制体(Prefabs) Unity中的预制体是用来存储游戏对象、子对象及其所需组件的可重用资源&#xff0c;一般来说预制体资源可充当资源模版&#xff0c;在此模版基础上可以在场景中创建新的预制体实例。 使用预制体的好处 由于预制体系统可以自动保持所有实例副本同步&#xff0c…

golang-基础知识-interface

1. 什么是interface 在go中&#xff0c;interface&#xff08;接口&#xff09;是一种抽象类型&#xff0c;用于定义某些方法的集合&#xff0c;而不具体实现这些方法。接口允许你指定一个类型应该提供哪些功能&#xff0c;但不关心具体实现是什么。 定义一个接口的基本语法如…

window下docker使用一些多媒体应用

首先下载docker之类的就不讲了&#xff0c; 科学下载了三个内容。 1.视频多媒体&#xff1a; 在新建的文件夹创建三个子文件夹&#xff08;cache&#xff0c;config&#xff0c;media&#xff09;,然后启动命令即可。 启动命令&#xff1a; docker run -d --nameJellyfin …

LeetCode 动态规划 打家劫舍 II

打家劫舍 II 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻…

机器学习7_支持向量机_兵王问题

兵王问题描述 用SVM解决问题 国际象棋的规则&#xff1a; 兵&#xff1a;第一次向前可以走一格或两格&#xff0c;以后每次只能向前走一格&#xff0c;不能后退。 王&#xff1a;王被将死即告负。每次只能走一格。 兵王问题&#xff1a; 棋局上&#xff0c;黑方只剩一个王&…

力扣146 LRU缓存 Java版本

文章目录 题目描述代码 题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关…

`pnpm` 不是内部或外部命令,也不是可运行的程序或批处理文件(问题已解决,2024/12/3

主打一个有用 只需要加一个环境变量 直接安装NodeJS的情况使用NVM安装NodeJS的情况 本篇博客主要针对第二种情况&#xff0c;第一种也可参考做法&#xff0c;当然眨眼睛建议都换成第二种 默认情况下的解决方法&#xff1a;⭐⭐⭐ 先找到node的位置&#xff0c;默认文件夹名字…