当前位置: 首页 > news >正文

@NestedConfigurationProperty 注解用法

注解概述

  @NestedConfigurationProperty 注解在Spring Boot中用于标记配置类中的嵌套属性。这个注解通常用于当一个配置类拥有另一个非标量(非简单值,如自定义类型)属性时,指明该属性也应该被视为配置属性进行处理。

集合上的使用

  @NestedConfigurationProperty 本身并不直接用于集合属性。它主要用于标记单个复杂类型的配置属性,以便Spring Boot的配置机制能够识别这些属性为嵌套的配置对象。

集合属性的配置绑定

   对于集合类型的配置属性,例如ListSetMap,Spring Boot可以直接将配置文件中的值绑定到这些集合上,无需使用@NestedConfigurationProperty。如果集合中的元素是自定义类型,Spring Boot会尝试将配置值绑定到这些自定义类型的属性上。

示例一

考虑以下配置类示例:

@ConfigurationProperties(prefix = "my")
public class MyProperties {private List<NestedConfig> nestedConfigs;// Getter and setter methodspublic List<NestedConfig> getNestedConfigs() {return nestedConfigs;}public void setNestedConfigs(List<NestedConfig> nestedConfigs) {this.nestedConfigs = nestedConfigs;}public static class NestedConfig {private String property;// Getter and setter methodspublic String getProperty() {return property;}public void setProperty(String property) {this.property = property;}}
}

application.properties中,你可以这样配置嵌套的集合属性:

my.nested-configs[0].property=FirstValue
my.nested-configs[1].property=SecondValue

   Spring Boot将会自动将配置值绑定到MyProperties类中的nestedConfigs列表的相应元素上。每个列表元素是NestedConfig类型的实例,其property属性将被设置为相应的配置值。在这种情况下,你不需要在NestedConfig类上或其属性上使用@NestedConfigurationProperty注解。

示例二

  对于Map类型的配置属性,Spring Boot可以将配置文件中的值绑定到Map上,其中键是Map的键,值是Map的值。如果Map的值是自定义类型,不需要使用@NestedConfigurationProperty注解,Spring Boot会自动处理配置的绑定。

@ConfigurationProperties(prefix = "my")
public class MyProperties {private Map<String, NestedConfig> nestedConfigMap;// Getter and setter methodspublic Map<String, NestedConfig> getNestedConfigMap() {return nestedConfigMap;}public void setNestedConfigMap(Map<String, NestedConfig> nestedConfigMap) {this.nestedConfigMap = nestedConfigMap;}public static class NestedConfig {private String property;// Getter and setter methodspublic String getProperty() {return property;}public void setProperty(String property) {this.property = property;}}
}

application.propertiesapplication.yml中配置Map属性:

# For application.properties
my.nested-config-map.key1.property=Value1
my.nested-config-map.key2.property=Value2

or

# For application.yml
my:nested-config-map:key1:property: Value1key2:property: Value2

   在这个例子中,my.nested-config-map是一个映射,其键是String类型,值是NestedConfig类型。配置文件中的每个条目都会创建一个NestedConfig实例,并将其property属性设置为相应的配置值。

   在Map集合中使用@NestedConfigurationProperty不是必须的,因为Spring Boot已经提供了处理嵌套配置的能力。当你的配置属性是Map类型,并且Map的值是自定义类型时,只需确保自定义类型有正确的getter和setter方法,Spring Boot将自动进行配置绑定

相关文章:

  • 【Python百宝箱】数据科学的黄金三角:数据挖掘和聚类
  • 浅述无人机技术在地质灾害应急救援场景中的应用
  • React学习计划-React16--React基础(三)收集表单数据、高阶函数柯里化、类的复习
  • 透视数据:数据可视化工具的多重场景应用
  • 【华为OD题库-106】全排列-java
  • Hadoop 集群环境搭建
  • Pooling方法总结(语音识别)
  • Farad capacitor法拉电容为什么又称Super capacitor超级电容?
  • 2024最新软件测试面试题(带答案)
  • 【数据结构之顺序表】
  • 掌握Jenknis基础概念
  • 【华为机试】2023年真题B卷(python)-乘坐保密电梯
  • 持续集成交付CICD:HELM 自动化完成前端项目应用发布与回滚
  • HBase基础知识(二):HBase集群部署、HBaseShell操作
  • Linux的/proc/self/学习
  • Codepen 每日精选(2018-3-25)
  • Gradle 5.0 正式版发布
  • Javascript编码规范
  • Java教程_软件开发基础
  • Python进阶细节
  • Python利用正则抓取网页内容保存到本地
  • SpiderData 2019年2月13日 DApp数据排行榜
  • 给新手的新浪微博 SDK 集成教程【一】
  • 构建二叉树进行数值数组的去重及优化
  • 开源地图数据可视化库——mapnik
  • 小李飞刀:SQL题目刷起来!
  • 自制字幕遮挡器
  • 【云吞铺子】性能抖动剖析(二)
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (转)详解PHP处理密码的几种方式
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET导入Excel数据
  • .Net组件程序设计之线程、并发管理(一)
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • /bin/bash^M: bad interpreter: No such file or directory
  • /etc/sudoers (root权限管理)
  • [<MySQL优化总结>]
  • [Android] Implementation vs API dependency
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [C/C++] -- 二叉树
  • [CSS]盒子模型
  • [flask]http请求//获取请求体数据
  • [Gradle] 在 Eclipse 下利用 gradle 构建系统
  • [IE编程] 如何编程清除IE缓存
  • [JS] node.js 入门
  • [luoguP1666] 前缀单词(DP)