SpringBoot 开启配置绑定:@EnableConfigurationProperties

ops/2025/3/17 0:34:55/

文章目录

      • @EnableConfigurationProperties 开启单个配置属性绑定
      • @EnableConfigurationProperties 开启多个配置属性绑定
      • @EnableConfigurationProperties 的应用场景

@EnableConfigurationProperties 是 SpringBoot 在 org.springframework.boot.context.properties 包下提供的一个注解,该注解通常被声明于使用 @Configuration 注解标识的类上方, @EnableConfigurationProperties 的作用是通知一或多个被 @ConfigurationProperties 注解标识的类开启配置绑定功能。

@EnableConfigurationProperties 开启单个配置属性绑定

以下通过一个案例,演示使用 @EnableConfigurationProperties 开启单个配置属性 Bean 的绑定。

首先,在 application.yml 中声明配置:

school:name: 人才大学address: 北京市type: A_Type

然后,定义一个配置属性 Bean 与上述配置进行绑定:

java">import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;@Data
@ConfigurationProperties(prefix = "school")
public class SchoolProperties {private String name;private String address;private String type;}

最后,定义一个配置类并通知配置属性 Bean 开启配置绑定:

java">import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;@Configuration
@EnableConfigurationProperties(SchoolProperties.class)
public class CustomConfig {// 其他的配置}

此时在 application.yml 中声明的相关配置,将被成功绑定到 SchoolProperties 中。

@EnableConfigurationProperties 开启多个配置属性绑定

基于上述案例进行拓展,以下是使用 @EnableConfigurationProperties 开启多个配置属性绑定的案例。

首先,新增一组配置声明:

home:ip: 127.0.0.1city: 深圳市

然后,定义一个配置属性 Bean 与上述配置进行绑定:

java">@Data
@ConfigurationProperties(prefix = "home")
public class HomeProperties {private String ip;private String city;}

最后,修改配置类,新增上述配置属性 Bean 的声明:

java">@Configuration
@EnableConfigurationProperties({SchoolProperties.class,HomeProperties.class
})
public class CustomConfig {// 其他的配置}

此时在 application.yml 中声明的相关配置,将被成功绑定到 SchoolPropertiesHomeProperties 中。

@EnableConfigurationProperties 的应用场景

对于使用 @EnableConfigurationProperties 注解搭配 @ConfigurationProperties 注解进行配置绑定的应用而言,实际上有多种方案都可以做到与其等效的效果。例如:

  • 使用 @Component 注解搭配 @ConfigurationProperties 注解使用。
  • 使用 @Bean 注解搭配 @ConfigurationProperties@Configuration 注解使用。

相较于上述两种方式,使用 @EnableConfigurationProperties 注解,可以不再需要在配置属性 Bean 的上方再添加 @Component 或者在配置类中通过 @Bean 声明某个配置属性 Bean。

@EnableConfigurationProperties 注解的优点是方便将配置集中在一起进行管理,从而清晰的看到实现统一绑定配置的 Bean,而无需在自定义的 Bean 中逐个查找。例如:

java">import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;@Configuration
@EnableConfigurationProperties({SchoolProperties.class,HomeProperties.class
})
public class CustomConfig {// 其他的配置}

上例中,可以十分清晰、明确地观察到 SchoolPropertiesHomeProperties 在应用程序中进行了配置绑定。


http://www.ppmy.cn/ops/166356.html

相关文章

OpenCV实现图像特征提取与匹配

‌一、特征检测与描述子提取‌ ‌选择特征检测器‌ 常用算法包括: ‌ORB‌:一种高效的替代SIFT和SURF的算法,主要用于移动机器人和增强现实等领域。适合实时应用,结合FAST关键点与BRIEF描述子‌。‌SIFT(尺度不变特征变…

王者荣耀道具页面爬虫(json格式数据)

首先这个和英雄页面是不一样的,英雄页面的图片链接是直接放在源代码里面的,直接就可以请求到,但是这个源代码里面是没有的 虽然在检查页面能够搜索到,但是应该是动态加载的,源码中搜不到该链接 然后就去看看是不是某…

mac安装mysql之后报错zsh: command not found: mysql !

在Mac上安装MySQL后,如果终端中找不到mysql命令,通常是 因为MySQL的命令行工具(如mysql客户端)没有被正确地添加到你的环境变量中。 检查 MySQL 是否已安装 ps -ef|grep mysql查看到路径在 /usr/local/mysql/bin 查看 .bash_pro…

【SpringMVC】常用注解:@ModelAttribute

1.作用 该注解是在SpringMVC4.3版本后新加入的。它可以修饰方法和参数。出现在方法上,表示当前方法会在控制器的方法之前执行。它可以修饰 没有返回值的方法,也可以修饰没有返回值的方法。它修饰参数,获取指定 的数据给参数赋值。 当表单提…

多线程到底重不重要?

我们先说一下为什么要讲多线程和高并发? 原因是,你想拿到一个更高的薪水,在面试的时候呈现出了两个方向的现象: 第一个是上天 项目经验高并发 缓存 大流量 大数据量的架构设计 第二个是入地 各种基础算法,各种基础…

3ds Max 导入到 After Effects 还原摄像机要注意事项--deepseek

我:dp我这有两个脚本分别是syn软件相机导出到max的和syn软件相机导出到ae的,你能看出差别来吗?如果我想把max里的相机导入到ae里,保持原来的位置方向,该怎么做 dp:从这两个脚本可以看出,3ds Ma…

【漫话机器学习系列】134.基于半径的最近邻分类器(Radius-Based Nearest Neighbor Classifier)

在机器学习中,最近邻(Nearest Neighbor)算法是一种基本的分类方法,它主要依赖于计算点之间的距离来进行分类。最常见的最近邻算法是 k-最近邻(k-Nearest Neighbors, k-NN),它通过选取距离目标点…

模拟String基本函数/深浅拷贝/柔性数组

1.首先我们先关注一下ASCII&#xff1a; 记住常用每一个字符对应的ascii码值&#xff01; 2.string函数的相关操作函数代码&#xff1a; 大多数小疑问都已经写在注释里面&#xff01; #pragma once #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<a…