@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 methods
    public List<NestedConfig> getNestedConfigs() {
        return nestedConfigs;
    }

    public void setNestedConfigs(List<NestedConfig> nestedConfigs) {
        this.nestedConfigs = nestedConfigs;
    }

    public static class NestedConfig {
        private String property;

        // Getter and setter methods
        public 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 methods
    public 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 methods
        public 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: Value1
    key2:
      property: Value2

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

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

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@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对象上。它们可以一起使用,以便更好地组织和管理配置属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值