@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;
}

总结

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

相关文章

  • kafka生产者和消费者的javaAPI的示例代码

    kafka生产者和消费者的javaAPI的示例代码

    这篇文章主要介绍了kafka生产者和消费者的javaAPI的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Spring boot创建自定义starter的完整步骤

    Spring boot创建自定义starter的完整步骤

    这篇文章主要给大家介绍了关于Spring boot创建自定义starter的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • springmvc Rest风格介绍及实现代码示例

    springmvc Rest风格介绍及实现代码示例

    这篇文章主要介绍了springmvc Rest风格介绍及实现代码示例,rest风格简洁,分享了HiddenHttpMethodFilter 的源码,通过Spring4.0实现rest风格源码及简单错误分析,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 解决mybatis 执行mapper的方法时报空指针问题

    解决mybatis 执行mapper的方法时报空指针问题

    这篇文章主要介绍了解决mybatis 执行mapper的方法时报空指针问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java实现多线程大批量同步数据(分页)

    Java实现多线程大批量同步数据(分页)

    这篇文章主要为大家详细介绍了Java实现多线程大批量同步数据(分页),文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Java实现调用接口API并返回数据

    Java实现调用接口API并返回数据

    这篇文章主要介绍了Java实现调用接口API并返回数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java 认识异常并掌握使用

    Java 认识异常并掌握使用

    所谓异常是指程序在运行时出现错误时提示调用者的机制,异常的种类有很多,不同种类的异常有不同的含义,也有不同的处理方式,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下
    2021-09-09
  • java中@EnableAutoConfiguration注解使用

    java中@EnableAutoConfiguration注解使用

    在Spring Boot框架中,@EnableAutoConfiguration是一种非常重要的注解,本文就来介绍一下java中@EnableAutoConfiguration注解使用,感兴趣的可以了解一下
    2023-11-11
  • Springboot使用zxing实现二维码生成和解析

    Springboot使用zxing实现二维码生成和解析

    ZXing支持各种条形码,二维码扫描,由多个模块组成, 而且支持PC端,移动端,本文将利用zxing实现二维码生成和解析,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • Java单链表的简单操作实现教程

    Java单链表的简单操作实现教程

    这篇文章主要给大家介绍了关于Java单链表的简单操作实现教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论