@ConfigurationProperties及@NestedConfigurationProperty的使用解读

 更新时间:2026年02月05日 16:46:41   作者:哀愁  
本文分享了如何在Spring Boot应用中使用`@ConfigurationProperties`和`@NestedConfigurationProperty`进行属性绑定,提供了一个自定义配置的示例,并附带个人经验供参考

创建一个springboot应用(默认忽略)

application.properties的自定义配置

spring.datasources.test.username=admin
spring.datasources.test.password=123456
spring.datasources.test.url=url
spring.datasources.test.driver=com.mysql
spring.datasources.duration=5

@ConfigurationProperties以及@NestedConfigurationProperty

使用进行属性绑定

package com.mn.properties;

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

import java.time.Duration;
import java.time.temporal.ChronoUnit;

/**
 * @description 第一种绑定配置文件的方式
 * @NestedConfigurationProperty 嵌套配置属性
 * 如果在绑定属性文件的类中 的属性是外部的类(不是在本类中)
 * 那么就可以使用这个嵌套属性类解决
 * 需要注意的是
 * 配置文件是 :
 * spring.datasources.test.username=admin
 * spring.datasources.test.password=123456
 * spring.datasources.test.url=url
 * spring.datasources.test.driver=com.mysql
 * 那么 @ConfigurationProperties 前缀是spring.datasource
 * @NestedConfigurationProperty 标注的属性上的属性名称 必须是 test
 * <p>
 * 详解:
 * @ConfigurationProperties(value = "spring.datasources", ignoreInvalidFields = true, ignoreUnknownFields = false)
 * value 代表的是配置文件中的前缀
 * ignoreInvalidFields 表示忽略无效的字段  当我们为属性配置错误时,我们不希望springboot程序启动失败  故此设置为false
 * ignoreUnknownFields 表示忽略未知的字段 默认是true  当我们配置的属性没有绑定到 @ConfigurationProperties这个类时,我们希望程序报错
 **/
@Data
@ConfigurationProperties(value = "spring.datasources", ignoreInvalidFields = true, ignoreUnknownFields = false)
@Component
public class DataSourceProperties {
    @NestedConfigurationProperty
    private DataSource test;

    /**
     * 不写单位默认按照毫秒
     */
    @DurationUnit(ChronoUnit.DAYS)
    private Duration duration;


}

用到的绑定类

@Data
public class DataSource {

    private String url;

    private String username;

    private String password;
    private String driver;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Springboot修改post请求接口入参或重新赋值方式

    Springboot修改post请求接口入参或重新赋值方式

    这篇文章主要介绍了Springboot修改post请求接口入参或重新赋值方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • Java parseInt解释加方法示例

    Java parseInt解释加方法示例

    使用此方法得到的原始数据类型的一个特定的字符串。 parseXxx()是一个静态方法,可以有一个参数或两个
    2013-11-11
  • mybatis generator只能生成insert和selectAll的操作

    mybatis generator只能生成insert和selectAll的操作

    这篇文章主要介绍了mybatis generator只能生成insert和selectAll的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • MyBatisPlus如何优化千万级数据的CRUD

    MyBatisPlus如何优化千万级数据的CRUD

    最近负责的一个项目,数据库表量级破千万,每次执行 CRUD 都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊 MyBatis Plus在千万级数据场景下如何优化 CRUD
    2025-06-06
  • 统一建模语言_动力节点Java学院整理

    统一建模语言_动力节点Java学院整理

    这篇文章主要介绍了统一建模语言的相关知识,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-06-06
  • centos7中如何优雅的动态切换jdk版本实例详解

    centos7中如何优雅的动态切换jdk版本实例详解

    这篇文章主要介绍了CentOS7安装多版本jdk并切换jdk版本的完整步骤,文中通过代码详细介绍使用alternatives命令管理多个JDK版本,步骤包括安装不同JDK、配置alternatives及切换版本验证,需要的朋友可以参考下
    2026-06-06
  • 简单了解JAVA变量类型及代码实例

    简单了解JAVA变量类型及代码实例

    这篇文章主要介绍了简单了解JAVA变量类型及代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 优化Java内存管理来防止“GC”错误的方法详解

    优化Java内存管理来防止“GC”错误的方法详解

    垃圾回收(GC)是 Java 中的一个重要机制,它可以管理内存并回收不再使用的对象所占用的资源,在本文中,我们将探讨一些技巧,帮助您避免这一错误,确保您的 Java 应用程序顺利运行,需要的朋友可以参考下
    2023-11-11
  • docusaurus如何添加一个搜索功能

    docusaurus如何添加一个搜索功能

    这篇文章主要介绍了docusaurus如何添加一个搜索功能,本文通过实例图文相结合给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • Shiro实现session限制登录数量踢人下线功能

    Shiro实现session限制登录数量踢人下线功能

    这篇文章主要介绍了Shiro实现session限制登录数量踢人下线,本文记录的是shiro采用session作为登录方案时,对用户进行限制数量登录,以及剔除下线,需要的朋友可以参考下
    2023-11-11

最新评论