深入解析Spring Boot中的@ConfigurationProperties注解

 更新时间:2026年02月13日 09:08:43   作者:java进阶之路2023  
本文主要介绍了深入解析Spring Boot中的@ConfigurationProperties注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在Spring Boot框架中,配置管理是一个核心功能。Spring Boot提供了多种方式来处理外部配置,其中@ConfigurationProperties注解是一个非常强大且灵活的工具。本文将深入探讨@ConfigurationProperties注解的概念、用法、工作原理、配置绑定、类型安全以及如何在实际开发中应用它。

什么是@ConfigurationProperties?

@ConfigurationProperties是Spring Boot提供的一个注解,用于将外部配置属性绑定到Java对象上。通过使用这个注解,开发者可以将配置文件(如application.propertiesapplication.yml)中的属性值自动映射到Java类的字段上,从而实现配置的集中管理和类型安全。

@ConfigurationProperties的作用

  1. 配置绑定:将配置文件中的属性值绑定到Java类的字段上,实现配置的自动映射。
  2. 类型安全:提供类型安全的配置绑定,避免类型转换错误。
  3. 复杂配置:支持复杂配置结构的绑定,如嵌套对象、集合、Map等。
  4. 配置校验:结合@Valid注解,实现配置属性的校验。

@ConfigurationProperties的基本用法

1. 定义配置类

首先,定义一个Java类,用于绑定配置属性。使用@ConfigurationProperties注解标记该类,并指定前缀(prefix)。

示例代码:

package com.yicrm.biz.config;


import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * <p>
 * uops-service配置
 * </p>
 *
 * @author zhaozhijun
 * @since 2026-01-07
 */

@Data
@Component
@ConfigurationProperties(prefix = "media-service")
public class MediaServiceConfig {

    //短视频路径
    private String path;

    //短视频路径-特殊租户
    private String path2;

    //直播路径
    private String broadcastPath;
    private String broadcastPath2;
    //token
    private String token;

    private String userId;

    private String companyId;
}

解释:

  • @ConfigurationProperties(prefix = "app"):指定配置属性的前缀为app
  • @Component:将该类注册为Spring Bean,使其可以被Spring容器管理。

2. 配置文件

application.propertiesapplication.yml文件中定义配置属性。

示例代码(application.properties):

media-service:
  path: https://***.ai/media-service/internal/dataApi/video/getCompanyCoreMetrics
  token: a5a6ae52b97f08e6847bbaf9bc054c13af797525
  userId: 3569
  companyId: 311

3. 启用配置属性支持

在Spring Boot应用的主类或配置类上,使用@EnableConfigurationProperties注解启用配置属性支持。

package com.yicrm;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

/**
 * 启动程序
 */
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableConfigurationProperties(AppProperties.class)
public class YiCrmApplication {
    public static void main(String[] args) {
        // System.setProperty("spring.devtools.restart.enabled", "false");
        // 关闭 PageHelper banner
        System.setProperty("pagehelper.banner", "false");
//        // 设置无头模式,避免在无图形界面的服务器环境中出现 X11FontManager 初始化错误
//        System.setProperty("java.awt.headless", "true");
        SpringApplication.run(YiCrmApplication.class, args);
        System.out.println("(♥◠‿◠)ノ゙  YI-CRM启动成功   ლ(´ڡ`ლ)゙");
    }
}

到此这篇关于深入解析Spring Boot中的@ConfigurationProperties注解的文章就介绍到这了,更多相关SpringBoot @ConfigurationProperties内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java可重入锁的实现示例

    Java可重入锁的实现示例

    在java中,可重入锁分为两种,即synchronized锁以及ReentrantLock及其实现,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • SpringBoot登录认证前后端实现方案:SpringBoot + Mybatis + JWT(图文实例)

    SpringBoot登录认证前后端实现方案:SpringBoot + Mybatis +&

    本文展示如何在Spring生态系统中整合IOC/DI、MyBatis、MD5加密、Session/Cookie管理、JWT令牌和拦截器,以实现一个企业级的认证方案,前端使用HTML/CSS/JavaScript/JQuery,后端使用SpringBoot+MyBatis+JWT,通过统一返回结果封装和图形验证码,提高了API的可维护性和安全性
    2025-10-10
  • java实现的RC4加密解密算法示例

    java实现的RC4加密解密算法示例

    这篇文章主要介绍了java实现的RC4加密解密算法,结合具体实例形式分析了java RC4加密解密算法的实现与使用技巧,需要的朋友可以参考下
    2017-06-06
  • Java中的SynchronousQueue阻塞队列及使用场景解析

    Java中的SynchronousQueue阻塞队列及使用场景解析

    这篇文章主要介绍了Java中的SynchronousQueue阻塞队列及使用场景解析,SynchronousQueue 是 Java 中的一个特殊的阻塞队列,它的主要特点是它的容量为0,这意味着 SynchronousQueue不会存储任何元素,需要的朋友可以参考下
    2023-12-12
  • 如何使用JDBC实现工具类抽取

    如何使用JDBC实现工具类抽取

    这篇文章主要介绍了如何使用JDBC实现工具类抽取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • java中hashmap的底层数据结构与实现原理

    java中hashmap的底层数据结构与实现原理

    Hashmap是java面试中经常遇到的面试题,大部分都会问其底层原理与实现,本人也是被这道题问惨了,为了能够温故而知新,特地写了这篇文章,以便时时学习
    2021-08-08
  • 一文详细地讲解Java异常及要如何处理

    一文详细地讲解Java异常及要如何处理

    在Java中异常处理是一种重要的编程概念,用于处理程序执行过程中可能出现的错误或异常情况,这篇文章主要介绍了Java异常及要如何处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-09-09
  • Mac使用Idea配置传统SSM项目(非maven项目)

    Mac使用Idea配置传统SSM项目(非maven项目)

    本文主要介绍了Mac使用Idea配置传统SSM项目(非maven项目),将展示如何设置项目结构、添加依赖关系等,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Mybatis的插件运行原理及如何编写一个插件

    Mybatis的插件运行原理及如何编写一个插件

    这篇文章主要介绍了Mybatis的插件运行原理及如何编写一个插件 ,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 一文搞懂Java中的序列化与反序列化

    一文搞懂Java中的序列化与反序列化

    序列化是将对象转换成二进制字节流的过程;反序列化是从二进制字节流中恢复对象的过程。文中降通过示例详解二者的使用与区别,需要的可以参考一下
    2022-08-08

最新评论