@ConfigurationProperties及@NestedConfigurationProperty的使用解读
作者:哀愁
本文分享了如何在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属性配置类@ConfigurationProperties注册为Bean的操作方法
- SpringBoot @ConfigurationProperties + Validation实现启动期校验解决方案
- 解读@ConfigurationProperties和@value的区别
- springboot使用@ConfigurationProperties实现自动绑定配置参数属性
- 解读@ConfigurationProperties的基本用法
- SpringBoot中的@ConfigurationProperties注解的使用
- SpringBoot中@ConfigurationProperties自动获取配置参数的流程步骤
