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

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
@NestedConfigurationProperty注解是Spring框架提供的一种注解,用于在@ConfigurationProperties注解中嵌套配置属性类。它的作用是将一个类中的属性作为另一个类的属性进行配置。 使用@NestedConfigurationProperty注解时,需要注意以下几点: 1. 该注解应该用于配置属性类中的嵌套属性。 2. 被注解的嵌套属性类需要提供getter和setter方法。 3. 嵌套属性类上还可以使用其他的@ConfigurationProperties注解,以便进行更复杂的配置。 与@ConfigurationProperties注解相比,@NestedConfigurationProperty注解主要用于解决嵌套属性类在使用@ConfigurationProperties注解时的问题。@ConfigurationProperties注解用于将外部配置文件中的属性值绑定到一个JavaBean对象上,而@NestedConfigurationProperty注解则用于在该JavaBean对象中嵌套其他的配置属性类。 @ConfigurationProperties注解可以将外部配置文件中的多个属性值绑定到一个JavaBean对象上,而@NestedConfigurationProperty注解则用于将一个JavaBean对象中的多个属性作为另一个JavaBean对象的属性进行配置。这样可以更好地组织和管理配置属性。 总结来说,@NestedConfigurationProperty注解用于在@ConfigurationProperties注解中嵌套配置属性类,而@ConfigurationProperties注解用于将外部配置文件中的属性值绑定到JavaBean对象上。它们可以一起使用,以便更好地组织和管理配置属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值