@Configuration 嵌套类中的属性未从 application.yaml 加载,而嵌套类上没有 @ConfigurationProperties

问题描述 投票:0回答:1

尝试此代码:

@Configuration
@ConfigurationProperties(prefix = "aa")
@Validated
@Setter
@Getter
public class AA {

    ...

    private BB bb;

    @Bean
    public BB bb() {
        return new BB();
    }

    @Setter
    @Getter
    public static class BB {

        private String someProperty;
    }
}

application.yaml

aa:
  bb: 
    someProperty: somevalue

运行应用程序时,“somevalue”未加载到 someProperty。但是,如果我将 @ConfigurationProperties(prefix = "aa.bb") 添加到 BB 类,则会加载它。为什么需要这个? Spring 应该使用 AA 类中的属性

private BB bb
自动构造 BB 类的前缀。

java spring configuration
1个回答
0
投票

@配置

@Configuration
注释用于向Spring指示一个类包含定义bean的方法。 bean 是 Spring 管理的类的实例。

表示一个类声明了一个或多个@Bean方法,并且可以是 由 Spring 容器处理以生成 bean 定义和 在运行时对这些 bean 的服务请求... [更多信息]


@配置属性

@ConfigurationProperties
注解用于向Spring指示我们要从
application.propertie
application.yaml
加载外部属性。 (您可以使用@ConfigurationProperties注释@Bean类或方法)

外部化配置的注释。将其添加到类中 定义或

@Bean
类中的
@Configuration
方法(如果您愿意) 绑定并验证一些外部属性(例如来自 .properties 文件)。 [更多信息]


因此,如果没有

@ConfigurationProperties
注解,Spring 将不会自动从外部源加载属性

您可以在“外部化配置”一章中找到更多信息。 这里

© www.soinside.com 2019 - 2024. All rights reserved.